Linux——进程间通信大汇总!(概述、管道通信、消息队列、共享内存、信号、信号量)

本文详细介绍了Linux系统中的进程间通信机制,包括管道(无名管道和命名管道)、消息队列、共享内存、信号以及信号量的概念、特点、API及编程实现。通过实例代码展示了如何在不同进程间进行数据传输、同步和互斥,帮助读者深入理解Linux进程间通信的各种方法。
摘要由CSDN通过智能技术生成

目录

一、进程间通信概述

1、概述

2、进程间通信的目的

3、进程间通信机制

二、管道通信原理

1、特点:

2、pipe函数原型:(创建管道函数)

3、例子:

4、无名管道的数据通信编程实现

 其中包含的读写函数原型:

demo1.c:

我们不知道父、子谁先运行:

5、创建名命管道

命名管道相关函数

demo2.c:创建管道

demo3.c:创建管道优化

6、名命管道 的数据通信编程实现(有名管道)

特点:

fifo函数原型:

但是需要注意的是

readdemo6.c:

程序无法结束,没有任何输出。("open success\n"也没有)

原因:

writedemo6.c:写+读

         优化代码:添加数据(两进程间通信)

read.c:

write.c:

三、消息队列相关api

1、特点

2、相关API

3、消息队列编程:收发数据

①msgGet.c:接收数据

②msgSend.c:发送数据

4、消息队列编程:队列两方相互通信

函数1:key_t ftok( const char * fname, int id );

函数2:int msgctl(int msqid, int cmd, struct msqid_ds *buf)

①接收端:实现两个进程相互接发数据内容

②发送端:实现两个进程相互接发数据内容

四、共享内存概述

通俗理解:

1、通信方式有:

2、共享内存编程实现

相关API:

①shmw.c:写端写入数据

②shm_read.c:读端读取数据

五、信号

1、概述(类似单片机的中断)

2、信号的名字和编号:

3、信号的处理:

信号处理函数的注册

信号处理发送函数

4、信号编程——入门版

signalDemo1.c:功能:按下ctrl+c无法停止程序(注册和处理函数)

signalDemo1CON.c:信号发送函数

5、信号编程——高级版(携带消息)

sigaction 的函数原型

         struct siginfo结构体说明

信号携带消息编程实战:

六、信号量

通俗理解:

1、特点

2、ftok、shmget、semop、semctl原型

3、例子

demo7.c:

从前我们要想child先运行,用的办法是father延时(sleep)等待孩子先运行,那么本节我们可以:child拿锁,先进房间先打印"this is child",然后父亲再打印"this is father"。优化代码demo8.c如下:


一、进程间通信概述

(7条消息) 【Linux系统编程】进程间通信概述_沧海一笑-dj的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行不地上

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值