Blob


1 #include <lib9.h>
2 #include <thread.h>
3 extern int _threaddebuglevel;
5 void
6 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 void
21 threadmain(int argc, char **argv)
22 {
23 Channel *c;
24 Waitmsg *w;
26 ARGBEGIN{
27 case 'D':
28 _threaddebuglevel = ~0;
29 break;
30 }ARGEND
32 c = threadwaitchan();
33 proccreate(doexec, argv, 8192);
34 w = recvp(c);
35 if(w == nil)
36 print("exec/recvp failed: %r\n");
37 else
38 print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg);
39 threadexits(nil);
40 }