linux下的管道mkfifo??????

xuewutian 2007-12-30 11:00:21
#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include<errno.h>
#include<fcntl.h>
#include<cstdlib>
using namespace std;

#define WRITEFORDRIVER "/home/y/driver"

int main()
{
if(mkfifo(WRITEFORDRIVER, O_CREAT | O_EXCL)<0 && errno != EEXIST)
cout << "can't create /root/driver" << endl;
cout << "********************************" << endl;
int fd = open(WRITEFORDRIVER, O_WRONLY, 0);
cout << "driver process ...................." << endl
;

我是在fedora7 2.6.23.8-34.fc7下
我想问的是,为什么我的程序运行到open后就不往下执行了,一直停在那里????
谢谢!!!!!
...全文
277 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuewutian 2007-12-31
  • 打赏
  • 举报
回复
谢谢!!!
现在可以了,原来是open时参数O_NONBLOCK没写上,谢谢!!!!!
littlefirebug 2007-12-31
  • 打赏
  • 举报
回复
打开的时候参数改一下,O_WRONLY|O_NONBLOCK
默认是没有O_NONBLOCK的.这样为写而打开一个FIFO要阻塞到某个进程为读而打开它
cnwolf 2007-12-31
  • 打赏
  • 举报
回复
是不是打开的设备文件

看看驱动有没有返回?

ps -x

看看进程状态是不是d

如果是就是驱动里死掉了

23,116

社区成员

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

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