Linux下进程间通信-六种机制 原创 Linux平台 2022年2月11日 18:00 夏至未至 1464 当前内容 1398 字,在路上,马上到,马上到 ### 目录 [TOC] ### 何为进程间通信 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核, 在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走, 内核提供的这种机制称为进程间通信 (IPC,InterProcess Com) ### 进程间通信方式 linux下进程间通信有如下几种方式(各方式具体介绍已总结完结): #### 管道 [匿名管道](https://www.codecomeon.com/posts/104/ "匿名管道")(Pipe)及[命名管道](https://www.codecomeon.com/posts/105/ "命名管道")(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。 #### 信号 [信号](https://www.codecomeon.com/posts/106/ "信号")(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期 信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上, 该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,sigaction函数重新实现了signal函数); #### 消息队列 [报文](https://www.codecomeon.com/posts/108/ "报文")(Message)[队列](https://www.codecomeon.com/posts/108/ "队列")(消息队列):消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。 #### 共享内存 [共享内存](https://www.codecomeon.com/posts/109/ "共享内存"):使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针其他通信机制运行效率较低设计的。往往与其它通信机制,如信号量结合使用, 来达到进程间的同步及互斥。 #### 信号量 [信号量](https://www.codecomeon.com/posts/110/ "信号量")(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。 #### 套接字 [套接字](https://www.codecomeon.com/posts/111/ "套接字")(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix 系统上:Linux和System V的变种都支持套接字。 各方式具体操作见其统一标签:[进程间通信](https://www.codecomeon.com/tags/90/ "进程间通信") 本文标题: Linux下进程间通信-六种机制 本文作者: 夏至未至 发布时间: 2022年2月11日 18:00 最近更新: 2022年9月9日 08:41 原文链接: 许可协议: 署名-非商业性-禁止演绎 4.0 国际(CC BY-NC-ND 4.0) 请按协议转载并保留原文链接及作者 进程间通信(8) 上一个 Linux进程间通信-管道之匿名管道 下一个 解决SSH连接Linux超时自动断开 当前文章评论暂未开放,请移步至留言处留言。