Linux进程间通信实例(pipe、shared memory、socket)

在Linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。Linux中提供有多种进程间通信的方法:

  • 管道(Pipes)
  • FIFO(或称named pipes)
  • 消息队列
  • Unix-domain Socket
  • 共享内存(Shared memory)

本文基于实例来演示其中的若干种通信机制。


1. 管道

这可能是最常用的一种方式。它仅可用于有亲缘关系的进程间通信,即parent process和child process之间。事实上,在shell中的使用命令行时,符号“|”就是一个Pipe。例如:

$ cat tmp_file | grep 'OS'

这表示你创建了一个管道,将cat的stdout与grep的stdin连接了起来。

调用函数pipe()生成两个文件描述符号,fd[0]和fd[1],它们分别对应read端和write端。例如下面的代码中,我们创建了一个父进程,一个子进程,并在二者之间建立管道(管道是Kernel空间中的一块内存区域)。子进程向管道中写入一个字符串,父进程则从管道中读出该字符串,并将其输出到屏幕上。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>

int main(int argc, const 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页
评论

打赏作者

白马负金羁

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值