From ace0646608c393d8952b14536090c302bed2ee85 Mon Sep 17 00:00:00 2001 From: Miguel Date: Fri, 21 Sep 2018 01:43:25 +0200 Subject: piperei working finally :) --- userspace/piper.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) (limited to 'userspace/piper.c') 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 #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); } - } -- cgit v1.2.3