| #include "u.h" |
| #include "libc.h" |
| #include "thread.h" |
| |
| void |
| execproc(void *v) |
| { |
| int i, fd[3]; |
| char buf[100], *args[3]; |
| |
| i = (int)v; |
| sprint(buf, "%d", i); |
| fd[0] = dup(0, -1); |
| fd[1] = dup(1, -1); |
| fd[2] = dup(2, -1); |
| args[0] = "echo"; |
| args[1] = buf; |
| args[2] = nil; |
| threadexec(nil, fd, args[0], args); |
| } |
| |
| void |
| threadmain(int argc, char **argv) |
| { |
| int i; |
| Channel *c; |
| Waitmsg *w; |
| |
| ARGBEGIN{ |
| case 'D': |
| break; |
| }ARGEND |
| |
| c = threadwaitchan(); |
| for(i=0;; i++){ |
| proccreate(execproc, (void*)i, 16384); |
| w = recvp(c); |
| if(w == nil) |
| sysfatal("exec/recvp failed: %r"); |
| } |
| } |