From 763f85c55fdb5a2c4f5bf98e4989a69d27da6e4f Mon Sep 17 00:00:00 2001 From: Miguel Date: Thu, 20 Sep 2018 10:46:00 +0200 Subject: pipes do not work :( --- userspace/piper.c | 48 ++++++++++++++++++++---------------------------- 1 file changed, 20 insertions(+), 28 deletions(-) (limited to 'userspace/piper.c') diff --git a/userspace/piper.c b/userspace/piper.c index 73b9516..e433a5c 100644 --- a/userspace/piper.c +++ b/userspace/piper.c @@ -1,42 +1,34 @@ #include +#include "newcalls.h" int main() { - setvbuf(stdout,NULL,_IONBF,0); - /* - FILE *f=fopen("~testpipe","rw"); + int fds[2]; + _pipe(fds); + + printf("opened pipe / in fd=%d,out fd=%d\n",fds[0],fds[1]); int pid=_fork(); - if(pid==0) + if(pid) { - char buf[2]; - fread(buf,1,1,f); - printf("[%c]\n",buf[0]); - while(1); - } + while(1) // read forever from our pipe and echo to stdout + { + char buf[256]; + int len=fread(buf,1,255,fds[0]); + printf("%s",buf); + } - else - { - char buf[]="666"; - fwrite(buf,1,1,f); - printf("written\n"); - while(1); } - */ - int f=_open("~testpipe","RW"); - int pid=_fork(); - if(pid==0) - { - char buf[2]; - while(_read(f,buf,1))printf("%c",buf[0]); - } - else { - char buf[]="666 the number of the beast"; - _write(f,buf,27); - printf("written\n"); + + // write to our pipe + fwrite("Hello\n",1,6,fds[1]); + fwrite("Bello\n",1,6,fds[1]); + fwrite("Gello\n",1,6,fds[1]); + + // hang forever + while(1); } - } -- cgit v1.2.3