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

相关推荐
hello kitty w20 分钟前
Python学习(7) ----- Python起源
linux·python·学习
十年磨一剑~30 分钟前
centos查看开启关闭防火墙状态
linux·运维·centos
vortex52 小时前
探索 Shell:选择适合你的命令行利器 bash, zsh, fish, dash, sh...
linux·开发语言·bash·shell·dash
GalaxyPokemon2 小时前
LeetCode - 148. 排序链表
linux·算法·leetcode
懒羊羊大王呀2 小时前
Ubuntu20.04中 Redis 的安装和配置
linux·redis
杰哥技术分享3 小时前
在 CentOS 上安装 Docker 和 Docker Compose 并配置使用国内镜像源
linux·docker·centos
知更鸟呆呆3 小时前
【Linux操作系统】基础开发工具(yum、vim、gcc/g++)
linux·运维·vim
xiangyong583 小时前
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
linux·ubuntu·gnu
t198751284 小时前
Linux 上的 Tomcat 端口占用排查
linux·tomcat·firefox
小狗爱吃黄桃罐头4 小时前
正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-12.1 Linux内核启动流程简介
linux·arm开发·学习