Linux系统中mkfifo创建管道后,调用open打开失败,不知道错在哪儿
来源:互联网 发布:域名备案需要多少钱 编辑:程序博客网 时间:2024/06/10 07:31
原文地址::https://zhidao.baidu.com/question/582458579522299805.html
相关文章
1、linux下为什么创建管道成功,打开管道却失败呢----https://zhidao.baidu.com/question/454079361.html
进程间通信之FIFO,在阻塞模式下,只有当读和写模式都打开时才返回,否则一直阻塞;非阻塞模式下,当读端没打开,则打开写端无效,返回错误。建议你读一读UNP卷2。
创建 fifo 时,写 0777 (8进制的 777)
你用了 nonblock 方式去打开fifo的写端,此时fifo的读端没有人open,所以一定会返回失败。必须先有人以读的方式打开fifo后,才能以nonblock方式打开写。或者去掉 O_NONBLOCK 参数。
//==============================================================================================
代码贴出来看看呢?打开管道失败,一般要注意打开的方式,一般不能以读写方式打开,要么只读打开,要么只写打开,否则会出错。如果以O_NONBLOCK 非阻塞方式打开的话,管道的另一端也要同时要打开。
read.c#include<sys/types.h>#include<sys/stat.h>#include<errno.h>#include<fcntl.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h> //fifo所在目录#define FIFO_SERVER "/tmp/myfifo"int main(int argc,char** argv){ char r_buf[100];//用来存放管道读出数据 int fd; int nread;写不下了啊。
追答
你试试这种方法呢,我是用的这个,一直很好。写端:1,建立管道:mkfifo(FIFO_FILE,0777);2,打开管道:fd = open("/tmp/myfifo", O_WRONLY);3,写数据:write(fd ,“Love Linux!”,11); 读端:1,打开管道:fd = open("/tmp/myfifo", O_RDONLY);2,读数据:read(fd ,r_buf,11);
0 0
- Linux系统中mkfifo创建管道后,调用open打开失败,不知道错在哪儿
- mkfifo命令不好使时创建命名管道
- 【linux】mkfifo 命令创建命名管道实现进程之间通信
- mkfifo函数创建有名管道
- linux系统编程之管道(三):命名管道FIFO和mkfifo函数
- linux系统编程之管道(三):命名管道FIFO和mkfifo函数
- mkfifo 创建管道IO 进程间交互
- 2011-05-26 18:33 有名管道通信原理及系统调用mkfifo()的使用方法
- 浅析linux中open系统调用
- 浅析linux中open系统调用
- linux设备驱动模型--open系统调用(创建文件)
- windows版mongodb不知道安装在哪儿
- 有名管道创建成功,但是打开失败的情况
- Linux下进程间通信:命名管道-mkfifo
- Linux下进程间通信:命名管道-mkfifo
- Linux c 管道文件-进程间的通信 mkfifo、pipe
- 文件打开时open系统调用
- 管道(pipe、mkfifo)
- svn解决冲突办法
- Spark on Yarn集群搭建详细过程
- jquery的一些自己常用的方法技巧
- oracle中char与varchar2的区别
- android屏蔽音量键(做到完全没声音)
- Linux系统中mkfifo创建管道后,调用open打开失败,不知道错在哪儿
- WebView加载本地Html文件并实现点击效果
- JSP--JSP注释
- 层次聚类算法
- Android设置透明、半透明等效果
- 关于java重的反射的总结。
- CI 添加公共函数 全局函数 自定义函数
- 【iOS开发】Xcode 8.0 cannot create __weak reference in file using manual reference counting
- JAVA设计模式之单例模式