From 1d110a14a44dce8a34be74821490a0ce303a64dd Mon Sep 17 00:00:00 2001 From: kosaki Date: Mon, 20 Jun 2011 13:55:04 +0000 Subject: * process.c (before_exec): use sig_do_nothing instead of SIG_DFL for avoiding a race. * process.c (sig_do_nothing): new function. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32178 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- process.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'process.c') diff --git a/process.c b/process.c index 16ac91cb72..4595ccf7b7 100644 --- a/process.c +++ b/process.c @@ -984,6 +984,12 @@ static RETSIGTYPE (*saved_sigpipe_handler)(int) = 0; # define signal(a,b) posix_signal((a),(b)) #endif +#ifdef SIGPIPE +static RETSIGTYPE sig_do_nothing(int sig) +{ +} +#endif + static void before_exec(void) { /* @@ -999,7 +1005,7 @@ static void before_exec(void) * child process interaction might fail. (e.g. ruby -e "system 'yes | ls'") * [ruby-dev:12261] */ - saved_sigpipe_handler = signal(SIGPIPE, SIG_DFL); + saved_sigpipe_handler = signal(SIGPIPE, sig_do_nothing); #endif if (!forked_child) { -- cgit v1.2.3