Merge branch 'cc/run-command'
* cc/run-command: run-command: Redirect stderr to a pipe before redirecting stdout to stderr
This commit is contained in:
commit
792f0e7d1a
@ -111,9 +111,10 @@ stderr as follows:
|
||||
.no_stdin, .no_stdout, .no_stderr: The respective channel is
|
||||
redirected to /dev/null.
|
||||
|
||||
.stdout_to_stderr: stdout of the child is redirected to the
|
||||
parent's stderr (i.e. *not* to what .err or
|
||||
.no_stderr specify).
|
||||
.stdout_to_stderr: stdout of the child is redirected to its
|
||||
stderr. This happens after stderr is itself redirected.
|
||||
So stdout will follow stderr to wherever it is
|
||||
redirected.
|
||||
|
||||
To modify the environment of the sub-process, specify an array of
|
||||
string pointers (NULL terminated) in .env:
|
||||
|
@ -91,6 +91,13 @@ int start_command(struct child_process *cmd)
|
||||
close(cmd->in);
|
||||
}
|
||||
|
||||
if (cmd->no_stderr)
|
||||
dup_devnull(2);
|
||||
else if (need_err) {
|
||||
dup2(fderr[1], 2);
|
||||
close_pair(fderr);
|
||||
}
|
||||
|
||||
if (cmd->no_stdout)
|
||||
dup_devnull(1);
|
||||
else if (cmd->stdout_to_stderr)
|
||||
@ -103,13 +110,6 @@ int start_command(struct child_process *cmd)
|
||||
close(cmd->out);
|
||||
}
|
||||
|
||||
if (cmd->no_stderr)
|
||||
dup_devnull(2);
|
||||
else if (need_err) {
|
||||
dup2(fderr[1], 2);
|
||||
close_pair(fderr);
|
||||
}
|
||||
|
||||
if (cmd->dir && chdir(cmd->dir))
|
||||
die("exec %s: cd to %s failed (%s)", cmd->argv[0],
|
||||
cmd->dir, strerror(errno));
|
||||
|
Loading…
Reference in New Issue
Block a user