plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

tspawn.c (803B)


      1 #include "u.h"
      2 #include "libc.h"
      3 #include "thread.h"
      4 
      5 void
      6 threadmain(int argc, char **argv)
      7 {
      8 	int fd[3];
      9 	Channel *c;
     10 	Waitmsg *w;
     11 
     12 	ARGBEGIN{
     13 	case 'D':
     14 		break;
     15 	}ARGEND
     16 
     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 }