Fifo开幕问题C.

mar*_*zzu 1 c fifo

我有这个代码:

mkfifo ("bPipe", 0660); /* Create named pipe */


int fd1 = open ("bPipe", O_WRONLY|O_NONBLOCK); /* Open named pipe for writing */

perror("FD1");

int fd = open ("bPipe", O_RDONLY|O_NONBLOCK); /* Open it for reading */

 perror("FD");

char*mex="Hello world\n\0";

write (fd1,mex , getStringLenght(mex)+1); 

char* result = readline(fd1);

printf("Rc %s : \n",result);
Run Code Online (Sandbox Code Playgroud)

我正在研究C中的FIFO,我试图创建两个FIFO,但在打开它之后我得到了这两个错误:

FD1:Device not configured
FD:Device not configured
Run Code Online (Sandbox Code Playgroud)

而且我不明白为什么.

PS"readLine"和"getStringLenght"是我的功能

P.P*_*.P. 5

fifo(7)国家文件:

进程可以在非阻塞模式下打开FIFO.在这种情况下,即使在写入端没有打开任何人,只读打开也会成功,只读打开将因ENXIO(没有这样的设备或地址)而失败,除非另一端已经打开.

这正是你做的.您先打开管道进行写入,但尚未打开读取结束.如果您将读/写调用交换给open()您应该没问题.

我相信你实际上是在调用perror()之前检查open()的返回码.在任何情况下,你应该设置errno0调用库函数之前(含<errno.h>)为errno可能被其他一些库/系统调用设置为其他值.