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信号来终止进程;或者用于进程间通信,例如在父进程和子进程之间通过信号传递信息。

相关推荐
Johny_Zhao1 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
chlk1233 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑3 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件3 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号3 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash4 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI4 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行5 天前
Linux和window共享文件夹
linux
木心月转码ing5 天前
WSL+Cpp开发环境配置
linux
崔小汤呀6 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端