Linux系统编程:进程间通信 2:有名管道和信号

1.有名管道(fifo)

创建:mkfifo (名称,权限),权限一般给:0666;

mkfifo创建的是一种特殊的文件,在系统中有一个对应的名称,文件大小是0bytes;

头文件:<sys/stat.h> <sys/types.h>

有名管道可以实现两个非亲缘关系的进程间的通信,通过将两个进程连接在同一个管道上,使用有名管道进行通信:进程可以通过open函数以只写模式打开有名管道,然后通过write函数向管道中写入数据;另一个进程则可以通过open函数以只读模式打开有名管道,然后通过read函数从管道中读取数据。

2.信号(signal)

信号是Linux中用于进程间通信和进程控制的一种机制。当某个事件发生时,例如键盘输入、硬件故障等,内核会向目标进程发送一个信号,通知进程进行处理。

3.信号使用

(1)信号发送:可以使用kill等函数向进程发送信号。例如:kill(pid, SIGINT)向进程ID为pid的进程发送SIGINT信号。

(2)信号处理:进程可以通过signal函数设置信号处理函数,在接收到信号时进行相应的处理。例如:signal(SIGINT, SIG_IGN)表示忽略SIGINT信号。

信号通常用于进程控制,例如在终端中通过Ctrl+C发送SIGINT信号来终止进程;或者用于进程间通信,例如在父进程和子进程之间通过信号传递信息。

相关推荐
tang_vincent1 小时前
linux 虚拟内存映射原理与启动初始化过程
linux
a3158238061 小时前
Android Framework开发知识点整理
android·java·linux·服务器·framework·android源码开发
赖small强2 小时前
【Linux C/C++开发】 GCC -g 调试参数深度解析与最佳实践
linux·c语言·c++·gdb·-g
white-persist2 小时前
VSCode 快捷键大全:从设计理念到场景化高效运用(详细解析)(文章末尾有vim快捷键大全)
linux·ide·vscode·python·编辑器·系统安全·vim
_w_z_j_3 小时前
Linux----信号(产生、保存、处理)
linux·运维·服务器
集大周杰伦3 小时前
RV1126开发板烧录与SSH登录实践
linux·ssh·嵌入式·rv1126·瑞芯微开发工具·ssh 远程登录
Xの哲學3 小时前
Linux RTC深度剖析:从硬件原理到驱动实践
linux·服务器·算法·架构·边缘计算
了一梨3 小时前
使用Docker配置适配泰山派的交叉编译环境
linux·docker
wdfk_prog4 小时前
[Linux]学习笔记系列 -- [fs]binfmt_script
linux·笔记·学习
GoWjw5 小时前
内存管理【3】
linux·服务器·c++·ubuntu