一个管道的小问题~~~

cocat 2010-06-02 10:15:18

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

int main(int argc, char *argv[])
{
mkfifo("/mnt/hgfs/cocat/danei/uc3/a.fifo", 0600);
int fd = open("/mnt/hgfs/cocat/danei/uc3/a.fifo", O_WRONLY);
if (fd < 0)
{
perror("open");
return -1;
}
printf("pipe ready!\n");
do
{
printf("input text:");
char str[100];
fgets(str, 100, stdin);
write(fd, str, sizeof(str));
if (strcmp(str, "bye") == 0)
{
break;
}
}
while (1);

close(fd);
return 0;
}


老是显示open: No such file or directory,到底是我mkfifo错了还是open错了啊?还是mkfifo失败了啊?
...全文
269 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocat 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cocat 的回复:]
当然可以~我就是用root用户啊~mount是啥呢?
[/Quote]

呵呵~是的~就是共享目录的问题~谢咯~
brookmill 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cocat 的回复:]
当然可以~我就是用root用户啊~mount是啥呢?
[/Quote]
楼主你是说有权限在/mnt/hgfs/cocat/danei/uc3/这里创建文件、修改文件吗?
那就很奇怪了,如果你能用cp这些命令修改这个目录,那这个管道应该就能创建才对。

楼主有没有试试换一个不是/mnt/hgfs的路径看看?
justin_luhui 2010-06-02
  • 打赏
  • 举报
回复
今天也刚学FIFO
换个路径试试 据说vmware tools下的共享目录下建文件会出现莫名其妙的问题
cocat 2010-06-02
  • 打赏
  • 举报
回复
当然可以~我就是用root用户啊~mount是啥呢?
brookmill 2010-06-02
  • 打赏
  • 举报
回复
试试能不能在这个hgfs目录里执行touch、cp等命令。
用root行不行?
如果用root有权限,那就再试试用root执行那段mkfifo的代码
brookmill 2010-06-02
  • 打赏
  • 举报
回复
那楼主就先别管mkfifo啦,先看看有没有这个目录的权限
/mnt/hgfs/cocat/danei/uc3/
在这里创建文件、修改文件试试,如果不行,那就得研究hgfs怎么mount了。
cocat 2010-06-02
  • 打赏
  • 举报
回复
还真的是权限的问题~怎么改呢?出现这个错误mkfifo: Operation not permitted
brookmill 2010-06-02
  • 打赏
  • 举报
回复
有没有可能是mount之后的权限问题?
建议楼主先不改代码,把路径换成一个本地的普通路径试试。如果能成功,就说明和mount有关。
brookmill 2010-06-02
  • 打赏
  • 举报
回复
同意楼上。检查mkfifo的返回值,0表示成功,否则表示失败。如果没有返回0,再看看errno是什么。
On success mkfifo() returns 0. In the case of an error, -1 is returned
(in which case, errno is set appropriately).
Boover 2010-06-02
  • 打赏
  • 举报
回复
判断一下mkfifo的返回值,看看!

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧