diff options
| -rw-r--r-- | src/process.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/src/process.c b/src/process.c index acdb5a35..174cc58e 100644 --- a/src/process.c +++ b/src/process.c @@ -22,7 +22,7 @@ extern regex_t **regList;  int forkCommand(char **args, int *outfd, int *errfd, int *cmdfd, int quiet) {     /* Fork command 'cmd', returning pid, and optionally pointer      * to open file descriptor fd */ -    int fdin, fdout, fderr, fdcmd, pid; +    int fdout, fderr, fdcmd, pid;      int outpipe[2], errpipe[2], fdpipe[2];      int ourpid; @@ -45,9 +45,13 @@ int forkCommand(char **args, int *outfd, int *errfd, int *cmdfd, int quiet) {         if (!quiet)  	 fderr=dup(2);      } -    fdcmd = fdpipe[1]; -    if (cmdfd) -      *cmdfd = fdpipe[0]; +     +    if (cmdfd) { +	*cmdfd = fdpipe[0]; +	fdcmd = fdpipe[1]; +    } else { +        fdcmd = open("/dev/null",O_WRONLY); +    }      ourpid = getpid();      if ((pid = fork())==-1) {  	perror("fork"); @@ -58,7 +62,6 @@ int forkCommand(char **args, int *outfd, int *errfd, int *cmdfd, int quiet) {       * fucks up and we segfault or something, we don't kill rc.sysinit. */      if ( (cmdfd&&!pid) || (pid &&!cmdfd)) {  	/* parent */ -	close(fdin);  	close(fdout);  	close(fderr);  	close(fdcmd); | 
