Пример #1
0
static void close_cb(uv_handle_t *handle)
{
  Job *job = handle_get_job(handle);

  if (--job->pending_closes == 0) {
    // Only free the job memory after all the associated handles are properly
    // closed by libuv
    rstream_free(job->out);
    rstream_free(job->err);
    wstream_free(job->in);
    shell_free_argv(job->proc_opts.args);
    free(job->data);
    free(job);
  }
}
Пример #2
0
void input_stop_stdin(void)
{
  if (!read_stream) {
    return;
  }

  rstream_stop(read_stream);
  rstream_free(read_stream);
  read_stream = NULL;
}
Пример #3
0
static void close_cb(uv_handle_t *handle)
{
  Job *job = handle_get_job(handle);

  if (--job->pending_closes == 0) {
    // Only free the job memory after all the associated handles are properly
    // closed by libuv
    rstream_free(job->out);
    rstream_free(job->err);
    if (job->in) {
      wstream_free(job->in);
    }

    // Free data memory of process and pipe handles, that was allocated
    // by handle_set_job in job_start.
    free(job->proc.data);
    free(job->proc_stdin.data);
    free(job->proc_stdout.data);
    free(job->proc_stderr.data);

    shell_free_argv(job->proc_opts.args);
    free(job);
  }
}