Chinaunix首页 | 论坛 | 博客
  • 博客访问: 76237
  • 博文数量: 15
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 117
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-25 12:01
文章分类

全部博文(15)

文章存档

2017年(1)

2016年(1)

2015年(13)

我的朋友

分类: 系统运维

2015-05-21 18:43:46



  • 环境:RedHat5.8,以root登录。

  • 问题:创建管道失败,报错“open: No such file or directory”。是目录权限的问题。

  • 分析:
1)fifo_read.c中,定义管道路径为:
#define FIFO "/mnt/hgfs/rhelshare/c_code/day4-process_conmunication/test15/myfifo"
创建管道:
if((mkfifo(FIFO, O_CREAT | O_EXCL)) && (errno != EEXIST))
printf("Cannot create fifoserver.\n");
创建管道失败,mkfifo返回“-1”。出错:
Cannot create fifoserver.
Preparing for reading bytes...
open: No such file or directory

2)gdb发现errno=1,即EPERM,操作不被允许。
3)因为,“/mnt/”目录权限为“rwxr-xr-x”,root可写;而其下的“hgfs/”是与Windows主机的共享目录,其权限为“r-xr-xr-x”,虽然此目录下的所有文件及目录均有“rwxrwxrwx”权限,管道也不能创建成功。

4)解决办法:更改管道路径为其他可写路径,如“/tmp/myfifo”或“/mnt/myfifo”。

疑问:为什么在当前目录可以进行文件读写操作,却不能用于管道通信。
阅读(3350) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~