Blob
1 #include <lib9.h>2 #include <thread.h>3 extern int _threaddebuglevel;5 void6 doexec(void *v)7 {8 int fd[3];9 char **argv = v;11 fd[0] = dup(0, -1);12 fd[1] = dup(1, -1);13 fd[2] = dup(2, -1);14 threadexec(nil, fd, argv[0], argv);15 print("exec failed: %r\n");16 sendp(threadwaitchan(), nil);17 threadexits(nil);18 }20 void21 threadmain(int argc, char **argv)22 {23 Channel *c;24 Waitmsg *w;26 ARGBEGIN{27 case 'D':28 _threaddebuglevel = ~0;29 break;30 }ARGEND32 c = threadwaitchan();33 proccreate(doexec, argv, 8192);34 w = recvp(c);35 if(w == nil)36 print("exec/recvp failed: %r\n");37 else38 print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg);39 threadexits(nil);40 }