进程间通信的六种方式

本文详细介绍了Linux进程间通信的六种方式:管道(有名管道和无名管道)、信号、共享内存、消息队列、信号量集和套接字。每种方式都包括其特点、操作步骤和应用场景,例如管道的先入先出原则,信号的异步通信机制,共享内存的高效通信速度,以及套接字在跨主机通信中的作用。
摘要由CSDN通过智能技术生成

一:管道

有名管道:

1.可以用于互不相关的两个进程之间的通信。

2.可以通过指明路径创建管道,在文件系统中是可见的,可以当做普通文件进行读写操作。

3.遵循先入先出的规则,写入的数据添加在末尾。

操作步骤:1.创建有名管道。mkfifo():创建时指明路径和权限。

无名管道:

1.只能用于具有亲缘关系的进程之间的通信。如:fork()创建的父子进程。

2.是一个单工通信的通信模式。有固定的的读端和写端,fd[0]表示读端,fd[1]表示写端。

3.是一种特殊的文件,可以进行读写操作,但不输入任何文件系统,并且只存在于内存中。

4.在读写操作时,不能一直写入数据而不读数据,不然写入数据的进程会收到内核传过来的SIGPIPE信号(管道破裂)。

操作步骤:1.传建管道。pipe(int fd[2]):fd[2]存放管道对应的文件描述符。

二:信号:

信号进程间通信中唯一的一种异步通信机制,进程可以通过三种方式来响应信号:1.忽略信号,其中有两个信号不能被忽略,SIGKILL和SIGSTOP。2.执行默认操作。3.捕捉信号,当信号发生时,执行相应的处理函数。

操作步骤:1.发送信号。kill(pid_t pid,int sig):指定哪一个进程发送信号。raise(int sig):给自身发送信号。alarm(int sec):经过sec秒后给改进程发送SIGALARM信号。2.设置信号。signal():通过传入参数对对应信号进行处理。

三:共享内存:

进程间通信速率最快的一种通信方式。

用户不能直

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值