diff options
Diffstat (limited to 'userspace/piper.c')
| -rw-r--r-- | userspace/piper.c | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/userspace/piper.c b/userspace/piper.c index f45248e..80cbd27 100644 --- a/userspace/piper.c +++ b/userspace/piper.c @@ -1,38 +1,27 @@ #include <stdio.h> #include "newcalls.h" +extern **environ; + int main() { int fds[2]; _pipe(fds); - printf("opened pipe / in fd=%d,out fd=%d\n",fds[0],fds[1]); - int pid=_fork(); if(pid) { - while(1) // read forever from our pipe and echo to stdout - { - char buf[256]; - int len=fread(buf,1,255,fds[0]); - //int len=_read(fds[0],buf,255); - buf[len]=0; - printf("-\n"); - printf("%s\n",buf); - printf("-\n"); - } - + _close(fds[1]); + _dup2(fds[0],0); // replace stdin with the read-end of pipe + char *args[]={"grep",NULL}; + _execve("/bin/grep",args,environ); } else { - - // write to our pipe - _write(fds[1],"Hello\n",fds[1]); - _write(fds[1],"Bello\n",fds[1]); - - // hang forever - while(1); + _close(fds[0]); + _dup2(fds[1],1); // replace stdout with the write-end of our pipe + char *args[]={"cat","hello.txt",0}; + _execve("/bin/cat",args,environ); } - } |
