我试图在unix中将字符串发送到管道。在逐行调试过程中,调用mkfifo()会在与源代码相同的目录中创建文件。但是,当我到达open()调用时,调试器将无法继续。我不知道为什么它不能访问管道文件。
下面是有问题的代码:

#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
int fd;
char * myfifo = "myfifo";

/* create the FIFO (named pipe) */
mkfifo(myfifo, 0666);

/* write "Hi" to the FIFO */
fd = open(myfifo, O_WRONLY);
write(fd, "Hi", sizeof("Hi"));
close(fd);

/* remove the FIFO */
unlink(myfifo);

return 0;
}

如有任何建议,我们将不胜感激。谢谢您。

最佳答案

通常,在任何一方可以继续之前,必须同时在两端打开FIFO。既然你没有提到读者,最有可能的答案是你没有读者,或者你还没有建立读者。一旦你这样做,开放将被允许进行。

09-30 20:19