plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

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 }