当前位置: 技术问答>linux和unix
[Help]FIFO管道非阻塞通讯问题。。。
来源: 互联网 发布时间:2016-09-18
本文导语: 进程AAA创建管道FIFO_AAA 进程AAA向管道FIFO_AAA写数据,从管道FIFO_BBB读数据, 该进程是主进程,进程BBB退出后进程AAA还照常运行,不阻塞。 write_fd = open(write_fifo_name,O_NONBLOCK); read_fd = open(read_fifo_name,O_NONBLOCK) 进程BBB创建管道F...
进程AAA创建管道FIFO_AAA
进程AAA向管道FIFO_AAA写数据,从管道FIFO_BBB读数据,
该进程是主进程,进程BBB退出后进程AAA还照常运行,不阻塞。
write_fd = open(write_fifo_name,O_NONBLOCK);
read_fd = open(read_fifo_name,O_NONBLOCK)
进程BBB创建管道FIFO_BBB
进程BBB向管道FIFO_BBB写数据,从管道FIFO_AAA读数据;
想实现进程AAA读写管道不阻塞,进程BBB读管道阻塞。
read_fd = open(read_fifo_name,O_NONBLOCK)
write_fd = open(write_fifo_name, O_WRONLY);
碰到个问题就是:进程BBB总是读不到数据???
|
你只需要在父进程中用mkfifo()来创建FIFO,然后在父、子进程中分别open就行了。
看你的代码,貌似在父子进程中都使用了mkfifo。
看你的代码,貌似在父子进程中都使用了mkfifo。
|
lz又发了一贴阿,你的代码太多,不知道该看哪个,给你写几条建议:
1. 不要在程序里建管道,提前建好比较好,建管道的命令是mkfifo
2. open的时候,一个程序以O_RDONLY方式打开管道A,另一个程序就要以O_WRONLY方式打开管道A
3. read的时候最好循环读,每次的消息最好有个结束符,这样便于判断是否读完。
1. 不要在程序里建管道,提前建好比较好,建管道的命令是mkfifo
2. open的时候,一个程序以O_RDONLY方式打开管道A,另一个程序就要以O_WRONLY方式打开管道A
3. read的时候最好循环读,每次的消息最好有个结束符,这样便于判断是否读完。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。