www.pudn.com > pthread_examples.rar > readfifo.c
#include#include #include #include #define FIFO_SERVER "/home/share/jinbq/pthread_examples/pipe/fifoserver" main(int argc,char** argv) { char r_buf[4096*2]; int fd; int r_size; int ret_size; int iRet; r_size = atoi(argv[1]); /*传入的参数是需要读取的字节数*/ printf("requred real read bytes %d\n", r_size); memset(r_buf, 0, sizeof(r_buf)); iRet = mkfifo(FIFO_SERVER, O_CREAT|O_EXCL); if((errno == EEXIST)) { printf("cannot create fifoserver\n"); } //fd = open(FIFO_SERVER, O_RDONLY|O_NONBLOCK, 0); fd = open(FIFO_SERVER, O_RDONLY, 0); //在此处可以把读程序编译成两个不同版本:阻塞版本及非阻塞版本 printf("fd = %d\n", fd); if((fd == -1) && (errno != EAGAIN)) { printf("open %s for read error\n", FIFO_SERVER); exit(1); } while(1) { memset(r_buf, 0, sizeof(r_buf)); ret_size = read(fd, r_buf, r_size); if(ret_size == -1) { if(errno == EAGAIN) { printf("no data avlaible\n"); } } printf("real read bytes %d\n",ret_size); sleep(1); } pause(); unlink(FIFO_SERVER); }