linux进程通信的方式(1)
来源:互联网 发布:切尔诺贝利核事故 知乎 编辑:程序博客网 时间:2024/06/05 00:29
Linux进程间通信方式
一, 无名管道
1, 无名管道(pipe)
特点:单向的,先进先出,
只用于父子进程间的同信
管道尾部写入数据,管道头部独处数据
被读取的数据,将不存在管道中,其他的进程也读不到。
管道对于进程两端而言,也是文件操作,所以,可以用不带缓冲的文件操作函数进行相应的读取。
2, 管道操作
创建:pipe()
读取:read();
写入:write();
关闭:close()
3, pipe函数
函数作用:创建无名管道
函数原型:int pipe(int filedes[2])
函数参数:数组filedes保存文件描述符,分别是filedes[1]:管道的写入端
filedes[0]:管道的读取端
返回值:成功返回0,失败返回1.
案例:如何创建无名管道。
案例:如何通过管道进行父子进程之间的通信
步骤1,先创建一个管道
步骤2,通过fork()函数创建一个子进程,该子进程会继承父进程所创建的管道,即就是在创建线程前的所有代码,子进程都会拷贝,其中就包括管道。
注意点:系统调用fork()函数肯定在调用pipe()函数之后,否则子进程就不继承文件描述符。
4, 读写无名管道
关注点:管道是空的,读不出数据,需要等待
管道是满的,写不进去数据,需要等待
案例:管道读写。
附加结论:如果管道写入端关闭后,写入的数据将一直存在,直到读出为止。
在创建子进程和父进程之前,都要关闭
相应的写入端和读取端。这样一个线程被阻塞,另一个线程才能运行,因为系统最多只允许一个线程存在。
二, 有名管道(FIFO)
1, 有名管道
特点:运行于同一个系统中的任意两个进程间的通信
遵循先进先出,读写注意同无名管道。
以FIFO的文件形式存在于系统中,
2, 管道操作
创建管道mkfifo
打开管道open
读管道read
写管道write
关闭管道close
删除管道unlink
3,mkfifo函数
函数作用:创建有名管道
函数原型:intmkfifo(const char * pathname, mode_t mode)
函数参数:
函数返回值:成功返回0;
成功返回-1
4,FIFO与文件的区别
FIFO文件在使用上和普通文件有相似之处,但是也有不同之处:
1. 读取fifo文件的进程只能以”RDONLY”方式打开fifo文件。
2. 写fifo文件的进程只能以”WRONLY”方式打开fifo
3. fifo文件里面的内容被读取后,就消失了。但是普通文件里面的内容读取后还存在。
- linux进程通信的方式(1)
- Linux进程通信(IPC)的方式
- 【Linux】进程间通信的几种方式(1)
- Linux进程的通信方式
- Linux 进程间通信方式(1)
- 进程间的通信方式(1)
- linux进程通信方式
- linux 进程间的通信方式总体介绍(一)
- Linux进程间通信(IPC)的几种方式
- linux系统的进程间通信方式
- linux进程通信的几种方式
- linux进程通信的几种方式
- Linux 的 进程/线程 通信方式总结
- Linux的进程/线程通信方式总结
- Linux的进程/线程通信方式总结
- Linux的进程/线程通信方式
- Linux的进程/线程通信方式
- Linux进程间的通信方式
- 新建servlet后tomcat启动不了,删除web.xml又可以启动
- ecshop数据库表3(ecs_admin_action)管理权限分配表
- 软件安装之rpm
- go学习--控制语句
- 3.C程序的机器级表示
- linux进程通信的方式(1)
- Longest Substring Without Repeating Characters
- ARM_Linux系统编程笔记
- validation-xwork框架的验证原理
- web启动本地app
- 3ds Max智能烘焙脚本
- 自己动手搭建有逼格的博格
- linux网络编程之socket(十二):select函数的并发限制和 poll 函数应用举例
- 开源的虚拟串口工具com0com