ref: a351bcdccdf5a4273bc8dc3360a48fbb8b8aa9ea
dir: /src/texec.c/
#include <u.h>
#include <libc.h>
#include <thread.h>
Channel*waitc;
Channel*pidc;
void
cmdproc(void* arg)
{
char* cmd = arg;
procexecl(pidc, cmd, cmd, nil);
sysfatal("procexecl: %r");
}
void
threadmain(int, char*[])
{
char ln[512];
int pid, nr;
Waitmsg *m;
write(1, "cmd? ", 5);
nr = read(0, ln, sizeof(ln)-1);
if (nr <= 1)
threadexits(nil);
ln[nr-1] = 0; // drop \n
pidc = chancreate(sizeof(ulong), 1);
waitc= threadwaitchan();
proccreate(cmdproc, ln, 8*1024);
pid = recvul(pidc);
print("started new proc pid=%d\n", pid);
if (pid >= 0){
m = recvp(waitc);
print("terminated pid=%d sts=%s\n", m->pid, m->msg);
free(m);
}
threadexits(nil);
}