runproc.c (573B)
1 #include <u.h> 2 #include <libc.h> 3 #include <thread.h> 4 #include <bio.h> 5 #include <ndb.h> 6 #include "dns.h" 7 8 Waitmsg* 9 runprocfd(char *file, char **v, int fd[3]) 10 { 11 int pid, i; 12 13 threadwaitchan(); 14 pid = threadspawn(fd, file, v); 15 for(i=0; i<3; i++) 16 close(fd[i]); 17 if(pid < 0) 18 return nil; 19 return procwait(pid); 20 } 21 22 Waitmsg* 23 runproc(char *file, char **v, int devnull) 24 { 25 int fd[3], i; 26 27 if(devnull){ 28 fd[0] = open("/dev/null", ORDWR); 29 fd[1] = dup(1, fd[0]); 30 fd[2] = dup(2, fd[0]); 31 }else{ 32 for(i=0; i<3; i++) 33 fd[i] = dup(i, -1); 34 } 35 return runprocfd(file, v, fd); 36 }