Blob


1 #include "u.h"
2 #include "libc.h"
3 #include "thread.h"
5 void
6 threadmain(int argc, char **argv)
7 {
8 int fd[3];
9 Channel *c;
10 Waitmsg *w;
12 ARGBEGIN{
13 case 'D':
14 break;
15 }ARGEND
17 c = threadwaitchan();
18 fd[0] = dup(0, -1);
19 fd[1] = dup(1, -1);
20 fd[2] = dup(2, -1);
21 if(threadspawn(fd, argv[0], argv) < 0)
22 sysfatal("threadspawn: %r");
23 fd[0] = dup(0, -1);
24 fd[1] = dup(1, -1);
25 fd[2] = dup(2, -1);
26 if(threadspawn(fd, argv[0], argv) < 0)
27 sysfatal("threadspawn: %r");
28 w = recvp(c);
29 if(w == nil)
30 print("exec/recvp failed: %r\n");
31 else
32 print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg);
33 w = recvp(c);
34 if(w == nil)
35 print("exec/recvp failed: %r\n");
36 else
37 print("%d %lud %lud %lud %s\n", w->pid, w->time[0], w->time[1], w->time[2], w->msg);
38 threadexits(nil);
39 }