网络编程_进程间通信_管道
来源:互联网 发布:ubuntu route设置 编辑:程序博客网 时间:2024/05/29 04:38
一. 匿名管道—-单工管道
1. 与文件的区别
popen()
关闭 pclose()
2. 操作
FILE* popen(const char* cmd,const char* open_mode);
读 size_t fread(void* buf,size_t size,size_t num,FILE* stream);
写 size_t fwrite(const void* buf,size_t size,size_t count,FILE* stream);
关闭 int pclose(FILE* stream);
3. 本质
启动shell和命令两个进程,从命令进程中读/写文件流
解决exec和system无法返回输出数据的问题
二. 匿名管道—-半双工管道
1. 操作
int pipe(int filedes[2]);
创建出两个文件描述符,0读1写 读 ssize_t write(int fd,const void* buf,size_t count);
写 ssize_t read(int fd,const void* buf,size_t count);
控制 int fcntl(int fd,int cmd,long arg);
设置或获取文件描述符状态,阻塞或非阻塞,若管道为空,read()默认为阻塞状态 关闭 close(filedes);
2. 本质
int
整数 FILE
指针 标准 POSIX ANSIC 打开 open
fopen
关闭 close
fclose
读 read
fread
写 write
fwrite
定位 lseek
fseek
三. 匿名管道—-管道复制
1. 文件描述符分类(文件为每个进程创建文件描述符)
STDIN_FILENO
0 标准输出 STDOUT_FILENO
1 标准错误 STDERR_FILENO
22. 操作及区别
int dup(int oldfd);
int dup2(int oldfd,int newfd);
四. 命名管道—-FIFO管道(半双工)
1. 操作
int mkfifo(pathname,mode);
打开 int open(const char* path,int mode);
mode:
O_RDONLY
阻塞只读
O_RDONLY|O_NONBLOCK
非阻塞只读
O_WRONLY
阻塞只写
O_WRONLY|O_NONBLOCK
非阻塞只写
2. 特点
可以是非亲缘进程之间,读写必须同时进行,否则阻塞
阅读全文
0 0
- 网络编程_进程间通信_管道
- 15.2 进程间通信_管道
- 进程通信_匿名管道
- Unix网络编程--进程间通信--管道通信
- 网络编程_进程基础
- 网络编程——进程间通信(匿名管道)
- 【UNIX网络编程】进程间通信之管道
- UNIX网络编程卷2进程间通信读书笔记-管道
- VC网络编程笔记--进程间通信-命名管道
- VC网络编程笔记--进程间通信-匿名管道
- 进程间通信编程--管道
- 进程间通信编程--管道
- 学习进程控制与进程通信_用命名管道来实现两个进程间的通信
- UNIX系统调用_管道/父子进程通信
- 进程间的通讯方式_管道(有名管道)
- 进程间的通讯方式_管道(无名管道)
- 网络编程_TCP_Socket通信_聊天室_私聊_构思_实现JAVA193-194
- 进程通信_剪贴板
- inux ‘E297: 交换文件写入错误’解决方法
- Dockerfile参考(9) – LABEL添加元数据到镜像
- Linux修改默认shell
- Spring 5.0 注解配置bean 04
- JAVA多线程常见面试问题解析
- 网络编程_进程间通信_管道
- BAT常见面试问题解析之java多线程「第二弹」
- Java中的I/O
- java程序员从笨鸟到菜鸟之(二十)常用类Math和System
- 对Linux学习的看法
- Java并发编程:深入剖析ThreadLocal
- 阶层1
- 关于Python里面协程的一些理解
- ChibiOS/RT移植到STM32F407