diff --git a/cbits/runProcess.c b/cbits/runProcess.c index be960a2f9a37c6d873c7da659bf3e87c0b252dba..f069b8b55627a48ac33ca089740c63c41b18616e 100644 --- a/cbits/runProcess.c +++ b/cbits/runProcess.c @@ -45,16 +45,30 @@ runInteractiveProcess (char *const args[], { int pid; int fdStdInput[2], fdStdOutput[2], fdStdError[2]; + int r; struct sigaction dfl; if (fdStdIn == -1) { - pipe(fdStdInput); + r = pipe(fdStdInput); + if (r == -1) { + sysErrorBelch("runInteractiveProcess: pipe"); + return -1; + } + } if (fdStdOut == -1) { - pipe(fdStdOutput); + r = pipe(fdStdOutput); + if (r == -1) { + sysErrorBelch("runInteractiveProcess: pipe"); + return -1; + } } if (fdStdErr == -1) { - pipe(fdStdError); + r = pipe(fdStdError); + if (r == -1) { + sysErrorBelch("runInteractiveProcess: pipe"); + return -1; + } } // Block signals with Haskell handlers. The danger here is that