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

相关推荐
adnyting几秒前
【Linux日新月异(九)】CentOS 7其他常用命令大全:系统操作与管理必备技巧
linux·运维·centos
偶像你挑的噻27 分钟前
3-Linux驱动开发-简单内核模块代码详解
linux·驱动开发·stm32·嵌入式硬件
赖small强27 分钟前
【Linux驱动开发】 Linux字符设备开发详细指南
linux·驱动开发·字符设备
p666666666832 分钟前
【☀Linux驱动开发笔记☀】linux下led驱动(非设备树)_03
linux·驱动开发·笔记·嵌入式硬件·学习
以琦琦为中心1 小时前
在RK3568开发板嵌入式开发中,配置NFS服务是实现与Ubuntu虚拟机之间文件共享的常用方法
linux·运维·ubuntu·rk3568
Nimsolax1 小时前
Linux网络DNS与ICMP
linux·网络
赖small强1 小时前
【Linux驱动开发】Linux UART 通信详解:从硬件到驱动再到应用
linux·驱动开发·uart
赖small强1 小时前
【Linux驱动开发】Linux 设备驱动中的阻塞与非阻塞 I/O:机制、源码与示例
linux·驱动开发·阻塞与非阻塞
yolo_guo2 小时前
opencv 学习: QA_02 什么是图像中的高频成分和低频成分
linux·c++·opencv·计算机视觉
q***56382 小时前
在 Ubuntu 22.04 上安装和配置 Nginx 的完整指南
linux·nginx·ubuntu