Read/print contents of fifo
RFC PATCH 1/1 Read/print contents of fifo
From 0f5b3ea20238e0704a71252a3d495ca0db61e1dc Mon Sep 17 00:00:00 2001
From: Sukadev Bhattiprolu <[email protected]>
Date: Sat, 14 Jun 2008 11:45:00 -0700
Subject: [RFC][PATCH] Read/print contents of fifo.
To test that checkpoint/restart of pipes is working, read one byte at a time from the pipe and write to stdout.
After checkpoint, both the checkpointed application and the restarted application should continue reading from the checkpoint.
The '-e' option to the program, tests with an empty pipe.
--- tests/pipe.c | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-)
tests/pipe.c +28 -4
@@ -3,25 +3,49 @@#include <unistd.h> #include <stdlib.h> #include <string.h> +#include <errno.h> +#include <sys/fcntl.h> -int main () +int main (int argc,char *argv[]) {int i =0 ; +int rc;int fds[2 ]; +int c; +int empty;char *buf ="abcdefghijklmnopqrstuvwxyz" ; +/* +* -e: test with an empty pipe +*/ + empty =0 ; +if (argc >1 &&strcmp (argv[1 ],"-e" ) ==0 ) + empty =1 ; +if (pipe (fds) <0 ) {perror ("pipe()" );exit (1 ); } -write (fds[1 ], buf,strlen (buf)); +if (!empty) +write (fds[1 ], buf,strlen (buf)); +if (fcntl (fds[0 ],F_SETFL ,O_NONBLOCK ) <0 ) { +perror ("fcntl()" ); +exit (1 ); + }printf ("Running as %d\n" ,getpid ());while (i<100 ) {sleep (1 ); -if (i%5 ==0 ) -printf ("i is %d (pid %d)\n" , i,getpid ()); +if (i%5 ==0 ) { + c = errno =0 ; + rc =read (fds[0 ], &c,1 ); +if (rc !=1 ) { +perror ("read() failed" ); + } +printf ("i is %d (pid %d), c is %c\n" , i,getpid (), c); + + } i++; } }
Signature · 1 line
1.5.2.5
A message that is not in the archive (sent off-list or not yet received): 20080617213040.GC11826-r/[email protected]
Quoted 9 lines · Quoting sukadev-r/[email protected]…
Quoted 2 lines
From
0f5b3ea20238e0704a71252a3d495ca0db61e1dcMon Sep 17 00:00:00 2001From: Sukadev Bhattiprolu <[email protected]>
Date: Sat, 14 Jun 2008 11:45:00 -0700
Subject: [RFC][PATCH] Read/print contents of fifo.To test that checkpoint/restart of pipes is working, read one byte at a time from the pipe and write to stdout.
Quoted 6 lines
After checkpoint, both the checkpointed application and the restarted application should continue reading from the checkpoint.
The '-e' option to the program, tests with an empty pipe.
Signed-off-by Sukadev Bhattiprolu <sukadev-r/[email protected]>
Thanks, will apply to the git tree tonight.
-serge
Quoted 64 lines
--- tests/pipe.c | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-)tests/pipe.c +28
-4@@ -3,25 +3,49 @@#include <unistd.h> #include <stdlib.h> #include <string.h> +#include <errno.h> +#include <sys/fcntl.h> -int main () +int main (int argc,char *argv[]) {int i =0 ; +int rc;int fds[2 ]; +int c; +int empty;char *buf ="abcdefghijklmnopqrstuvwxyz" ; +/* +* -e: test with an empty pipe +*/ + empty =0 ; +if (argc >1 &&strcmp (argv[1 ],"-e" ) ==0 ) + empty =1 ; +if (pipe (fds) <0 ) {perror ("pipe()" );exit (1 ); } -write (fds[1 ], buf,strlen (buf)); +if (!empty) +write (fds[1 ], buf,strlen (buf)); +if (fcntl (fds[0 ],F_SETFL ,O_NONBLOCK ) <0 ) { +perror ("fcntl()" ); +exit (1 ); + }printf ("Running as %d\n" ,getpid ());while (i<100 ) {sleep (1 ); -if (i%5 ==0 ) -printf ("i is %d (pid %d)\n" , i,getpid ()); +if (i%5 ==0 ) { + c = errno =0 ; + rc =read (fds[0 ], &c,1 ); +if (rc !=1 ) { +perror ("read() failed" ); + } +printf ("i is %d (pid %d), c is %c\n" , i,getpid (), c); + + } i++; } }Signature · 1 line
1.5.2.5