>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. Signed-off-by: Sukadev Bhattiprolu <[EMAIL PROTECTED]> --- tests/pipe.c | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-) diff --git a/tests/pipe.c b/tests/pipe.c index cc3cdfd..0812cb3 100644 --- a/tests/pipe.c +++ b/tests/pipe.c @@ -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++; } } -- 1.5.2.5 _______________________________________________ Containers mailing list [EMAIL PROTECTED] https://lists.linux-foundation.org/mailman/listinfo/containers _______________________________________________ Devel mailing list Devel@openvz.org https://openvz.org/mailman/listinfo/devel