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