X-Git-Url: http://git.onelab.eu/?p=vsys.git;a=blobdiff_plain;f=tests%2Fvsys_conctest.c;h=35f7c2d6a15085060b01158e2cec4b22780d2eae;hp=16fd279f24ff94515ffaf0614f8eca5085ffd076;hb=57622e7436de3e40f2dc56b17381eb0bfb18d23c;hpb=7ae75ecaa4e7772450202515acf892685ee6179e diff --git a/tests/vsys_conctest.c b/tests/vsys_conctest.c index 16fd279..35f7c2d 100644 --- a/tests/vsys_conctest.c +++ b/tests/vsys_conctest.c @@ -16,7 +16,7 @@ int main() char buf[4096]; int fd_in = -1, fd_out; int res; - int flag; + int flag,flag2; int count = 1; struct timeval tv={.tv_sec=5,.tv_usec=0}; @@ -27,27 +27,40 @@ int main() //usleep(200); printf("(%d)", count);fflush(stdout); - if ((fd_out = open(topcmd, O_RDONLY | O_NONBLOCK)) < 0) { fprintf(stderr, "error executing top\n"); exit(-1); } -// printf("(opening in file)"); - if ((fd_in = open(top_in_file, O_WRONLY)) < 0) { - fprintf(stderr, "error opening %s\n", top_in_file); - exit(-1); + //printf("((0))");fflush(stdout); + while ((fd_in = open(top_in_file, O_WRONLY| O_NONBLOCK)) < 0) { + fprintf(stderr, "Waiting for %s (%s)\n", top_in_file,strerror(errno)); + sleep (1); } + printf("%d open\n",fd_in); + + //printf("(1)"); if ((flag = fcntl(fd_out, F_GETFL)) == -1) { printf("fcntl get failed\n"); exit(-1); } + //printf("(2)"); + + //printf("(3)"); + if ((flag2 = fcntl(fd_in, F_GETFL)) == -1) { + printf("fcntl get failed\n"); + exit(-1); + } + //printf("(4)"); + while (1) { FD_ZERO(&readSet); FD_SET(fd_out, &readSet); + //printf("(5)"); res = select(fd_out + 1, &readSet, NULL, NULL, NULL); + //printf("(6)"); if (res < 0) { if (errno == EINTR || errno == EAGAIN) { printf("."); @@ -59,21 +72,43 @@ int main() break; /* we're done */ } + //printf("(7)"); if (fcntl(fd_out, F_SETFL, flag & ~O_NONBLOCK) == -1) { printf("fcntl set failed\n"); exit(-1); } + //printf("(8)"); + //printf("(9)"); if ((flag = fcntl(fd_out, F_GETFL)) == -1) { printf("fcntl get failed\n"); exit(-1); } + //printf("(10)"); + + + //printf("(11)"); + if (fcntl(fd_in, F_SETFL, flag2 & ~O_NONBLOCK) == -1) { + printf("fcntl set failed\n"); + exit(-1); + } + + //printf("(11)"); + if ((flag2 = fcntl(fd_in, F_GETFL)) == -1) { + printf("fcntl get failed\n"); + exit(-1); + } + //printf("(12)"); if (flag & O_NONBLOCK == 0) { printf("fd_out still nonblocking\n"); exit(-1); } + if (flag & O_NONBLOCK == 0) { + printf("fd_in still nonblocking\n"); + exit(-1); + } if ((fp = fdopen(fd_out, "r")) == NULL) { printf("fdopen failed\n"); exit(-1);