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*
runprocfd(char * file,char ** v,int fd[3])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*
runproc(char * file,char ** v,int devnull)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 }
37