ref: a351bcdccdf5a4273bc8dc3360a48fbb8b8aa9ea
dir: /src/pipeto.c/
#include <u.h> #include <libc.h> int pipeto(char* cmd) { int fd[2]; pipe(fd); switch(fork()){ case -1: return -1; case 0: close(fd[1]); dup(fd[0], 0); close(fd[0]); execl("/bin/rc", "rc", "-c", cmd, nil); sysfatal("execl"); default: close(fd[0]); return fd[1]; } } void main(int, char*[]) { int fd, i; char* msgs[] = { "warning: the world is over\n", "spam: earn money real fast!\n", "warning: it was not true\n" }; fd = pipeto("grep warning"); if (fd < 0) sysfatal("pipeto: %r"); for (i = 0; i < nelem(msgs); i++) write(fd, msgs[i], strlen(msgs[i])); close(fd); exits(nil); }