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

相关推荐
牛奶咖啡138 分钟前
从零到一使用Linux+Nginx+MySQL+PHP搭建的Web网站服务器架构环境——LNMP(上)
linux·lnmp·ngnix的源码安装部署·mysql的二进制文件安装部署·php源码的安装部署·记录并解决安装php的各种问题
软件测试很重要34 分钟前
UOS20系统安装与 SSH/XRDP 远程访问功能配置指南
linux·运维·ssh
GanGuaGua2 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm2 小时前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
不掰手腕2 小时前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql
Lynnxiaowen3 小时前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
努力学习的小廉3 小时前
深入了解linux系统—— POSIX信号量
linux·运维·服务器
刘一说3 小时前
CentOS部署ELK Stack完整指南
linux·elk·centos
从零开始的ops生活3 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx
1白天的黑夜13 小时前
Linux(3)|入门的开始:Linux基本指令(3)
linux·centos