Linux进程入门学习(五)-IPC介绍
来源:互联网 发布:网络调研常见的方法 编辑:程序博客网 时间:2024/06/11 00:29
1. IPC介绍
什么是进程间通信呢?下面用一幅图来表示:
进程间通信,简称IPC,就是在不同进程之间传播或交换信息。
通信目的:共享资源、通知事件、数据传输、进程控制
进程间通信类型
有两种:
a. 无亲缘关系间通信,如上面的进程A 与B
b. 有亲缘关系间通信,如上面的进程B 与B’
示例:“父子进程在用户空间中不能直接交互数据”
参考代码:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/ipc.h>int main(int argc,char **argv){ pid_t pid; int sync_flag = 0; pid = fork(); if(pid == 0) // child process { int i; while(sync_flag == 0); for(i = 0; i < 5; i++) { printf("this is child process \n"); usleep(100); } } else if(pid > 0) // parent process { int i; for(i = 0; i < 5; i++) { printf("this is parent process \n"); usleep(100); } sync_flag = 1; printf("the parent end \n"); } while(1); return 0;}
运行结果:
以上代码,得出结论:
父子进程在用户空间中不能直接交互数据
2.IPC 发展历史
1)早期UNIX 进程间通信:主要包括无名管道、FIFO、信号
2)基于System V 进程间通信:主要包括System V 消息队列、System V 信号灯、System V 共享内存
3)基于POSIX 进程间通信:主要包括posix 消息队列、posix 信号灯、posix 共享内存
linux 下的进程通信基本上是从Unix 平台上的进程通信继承而来,所以继承早期UNIX 进程间通信,同时兼容了贝尔实验室的system V 与IEEE 的Posix 标准,所以实现linux 系统的进程间通信方式有:
1)管道(有名管道、无名管道)
2)信号signal
3)sysetm V IPC(共享内存、消息队列、信号量)
4)POSIX IPC(共享内存、消息队列、信号量)
各种通信方式的比较和优缺点
无名管道:速度慢,容量有限,只有父子进程能通讯
有名管道:任何进程间都能通讯,但速度慢
信号量:不能传递复杂消息,只能用来同步
消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题
共享内存区:能够很容易控制容量,速度快,但要保持同步
- Linux进程入门学习(五)-IPC介绍
- Linux进程间通信IPC(五)-- msgget
- UNIX/Linux进程间通信IPC系列(五)信号
- Linux 进程学习(五)
- linux进程通信(ipc)
- linux进程通信(IPC)
- Linux进程学习五
- Linux进程学习五
- LINUX进程间通信(IPC)学习手记
- linux进程间通讯(IPC)学习整理
- 进程间通信(IPC)介绍
- 进程间通信(IPC)介绍
- Linux进程间通信(IPC)编程实践(五)消息队列实现回射客户/服务器
- Linux程序设计入门--进程介绍
- Linux程序设计入门--进程介绍
- Linux C编程--进程间通信(IPC)3--信号集和发送信号介绍
- Linux C编程--进程间通信(IPC)3--信号集和发送信号介绍
- Linux C编程--进程间通信(IPC)3--信号集和发送信号介绍
- STL set
- android 内存泄漏检测工具 LeakCanary 泄漏金丝雀
- java运行流程
- 重写与重载的区别
- java获取系统时间并写入数据库
- Linux进程入门学习(五)-IPC介绍
- C++Primer读书笔记——变量和基本类型补充
- 安装MongoDB并安装PyCharm的MongoDB插件
- crontab使用
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- 时间序列的算法ARMA算法的参数设定的问题
- 如何运用回调和泛型来简洁代码
- javase-关键字、标识符
- Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件