【发布时间】:2011-04-17 19:16:13
【问题描述】:
我在尝试通过管道发送数据时遇到了一个问题,更准确地说:我没有得到管道的非空文件描述符。 下面是创建管道的代码:
//PIPE is defined as a "/tmp/my.fifo"
umask(0);
...
mknod(PIPE,S_IFIFO,0);
...
p=fopen(PIPE,"w");
if (p)
{
//fprintf(p,"some message");
fclose(p);
}
else
printf("Could not open the pipe\n");
这是从管道读取的代码:
cos_pipe = fopen(PIPE,"r");
if (cos_pipe)
{
fgets(buffer,80,cos_pipe);
...
fclose(cos_pipe);
}
else
{
printf("Couldn't open the pipe\n");
usleep(300000);
}
代码被编译成两个不同的二进制文件,我分别启动它们。我得到的所有输出都是“无法打开管道”。
关于一些相关的说明:创建管道的程序是否应该稍后删除它?
【问题讨论】:
-
为什么不用
mkfifo而不是mknod? -
检查 strerror(errno): 权限被拒绝
标签: c linux named-pipes