git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Redirect stderr to a pipe before redirecting stdout to stderr

From
Christian Couder <chriscool@tuxfamily.org>
Date
Mar 3, 2008, 07:21 UTC
Message-ID
<20080303082111.24d3ea73.chriscool@tuxfamily.org>

With this patch, in the 'start_command' function after forking we now take care of stderr in the child process before stdout.

This way if 'start_command' is called with a 'child_process' argument like this:

	.err = -1;
	.stdout_to_stderr = 1;

then stderr will be redirected to a pipe before stdout is redirected to stderr. So we can now get the process' stdout from the pipe (as well as its stderr).

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 run-command.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)
	This patch should make my previous patch:
	[PATCH 1/2] help: add "man.viewer" config var to use "woman" or "konqueror"
	work as expected (at least with Emacs 21 and 22).
diff --git a/run-command.c b/run-command.c
index 743757c..44100a7 100644
--- a/run-command.c
+++ b/run-command.c
@@ -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);
-		}
Next: Shawn O. Pearce
Message 1 of 4 in “Redirect stderr to a pipe before redirecting stdout to stderr”
  1. Redirect stderr to a pipe before redirecting stdout to stderrChristian Couder, Mar 3, 2008
  2. Shawn O. PearceMar 3, 2008
  3. Christian CouderMar 3, 2008
  4. Johannes SixtMar 3, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.