ref: 2b99422480d596ebc26921c87c6bb81a07949f3e
dir: /progs/pipeto.c.ms/
.P1
.ps -1
.ti -1i
.B
.BX pipeto.c
.ps +1
.CW
.ps -2
.vs .15i
#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\en",
"spam: earn money real fast!\en",
"warning: it was not true\en" };
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);
}
.ps +2
.P2