- 论坛徽章:
- 0
|
本帖最后由 sgb_fish 于 2011-02-03 16:44 编辑
在看国嵌视频的时候,里面有一段代码:- #include <sys/types.h>
- #include <sys/stat.h>
- #include <errno.h>
- #include <fcntl.h>
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #define FIFO "/tmp/myfifo"
- int main(int argc, char *argv[])
- {
- char buf_r[100];
- int fd;
- int nread;
- if((mkfifo(FIFO,O_CREAT|O_EXCL) < 0)&&(errno != EEXIST))
- {
- printf("cannot create fifoserver\n");
- exit(-1);
- }
- printf("Preparing for reading bytes...\n");
- memset(buf_r,0,sizeof(buf_r));
- if((fd = open(FIFO,O_RDONLY|O_NONBLOCK,0)) == -1)
- {
- perror("open");
- exit(1);
- }
- while(1){
- memset(buf_r, 0, sizeof(buf_r));
- if((nread == read(fd, buf_r, 100)) == -1)
- {
- if(errno == EAGAIN)
- {
- printf("no data yet");
- }
- }
- else
- {
- printf("read %s from FIFO\n",buf_r);
- }
- sleep(1);
- }
- return 0;
- }
复制代码 为什么在没有向fifo中写数据的时候read函数的返回值不是-1呢? 并且errno的值也不是EAGAIN。
先谢谢各位牛了。 |
|