1 #include <u.h> 2 #include <libc.h> 3 4 Waitmsg* system(char * name,char ** argv)5system(char *name, char **argv) 6 { 7 char err[ERRMAX]; 8 Waitmsg *w; 9 int pid; 10 11 switch(pid = fork()){ /* assign = */ 12 case -1: 13 return nil; 14 case 0: 15 exec(name, argv); 16 errstr(err, sizeof err); 17 _exits(err); 18 } 19 for(;;){ 20 w = wait(); 21 if(w == nil) 22 break; 23 if(w->pid == pid) 24 return w; 25 free(w); 26 } 27 return nil; 28 } 29 30 Waitmsg* systeml(char * name,...)31systeml(char *name, ...) 32 { 33 return system(name, &name+1); 34 } 35