当前位置: 首页 > news >正文

Linux9-进程间通信-管道、信号

一、进程通信

同一主机进程间通信:

1.1无名管道

当前系统默认64K大小(当管道满时,再写时按FIFO的方式存储,会发生写阻塞)

用于同一主机下,具有亲缘关系的进程间通信。

1.创建一个管道并打开 int pipe(int pipefd[2]);(pipefd[0],管道的读端,pipefd[1]管道的写端) 

2.读管道    read();

3.写管道    write();

4.关闭管道 close();

5.删除管道 remove();

1.2有名管道

用于同一主机下,具有任意关系的进程间通信。

1.创建一个管道文件

mkfifo fifo(名为fifo的管道文件)    int mkfifo(const char *pathname, mode_t mode); 

a,b两个进程都创建了一个管道文件,目的是运行任意进程。

2.打开管道文件  open(“./fifo”,)//文件名、读写执行权限

3.读写                 write/read()

4.关闭                 close()

5.删除管道文件  remove(“路径”);

读关闭只写:管道破裂为防止这种情况,读写端必须同时打开。


1.3信号

信号:进程间的异步通知机制(软中断)

信号类型:kill -l

kill(pid,SIGUSR1)

2.Ctrl+C  3.Ctrl+\ 9.强制结束11.段错误 13.管道破裂 14.为进程定时,到达时间进程结束 17.子进程结束发给父进程 18.让停止态继续执行 19,让运行态停止 20.让进程暂停转后台Ctrl+Z

10/12自定义信号   9/19管理员信号 (无法被捕获和忽略)


1.3.2.接受信号

1.3.2.1.发送信号:


int kill(pid_t pid, int sig);

功能:给指定进程发送信号参数:
pid:进程pid号

Sig:发送的信号编号

  1.3.2.2 使用注册信号  

        1.1注册信号处理函数signal

        1.2忽略:不处理

        1.3捕获 : 按照用户自定义方式处理。

        1.4缺省:按信号默认方式处理(若不注册)

sighandler_t signal(int signum, sighandler_t handler);
功能:信号的接收方,注册一个信号处理函数

参数:

signnum:几号信号

handler:typede void (* sighandler_t handler)(捕获方式处理,自定义)

                SIG_IGN忽略方式处理

                SIG_DFL默认方式处理(缺省)

返回值:

        成功:函数地址

        失败:SIG_ERR

4.alarm
unsiqned int alarm(unsiqned int seconds):

功能:间隔seconds秒后给调用进程发送一个SIGALRM信号

参数:
seconds:秒数

返回值:
成功返回上次设定剩余的时间
上次未设定则返回0

5.int pause(void)

功能:挂起当前进程(可中断睡眠状态)

可以通过发送信号的方式,唤醒pause挂起的进程,信号必须被捕获。


1.4共享队列

1.5消息队列

1.6信号灯

不同主机进程间通信:

1.7网络套接字

相关文章:

  • C++算法基础语法-13
  • 单链表删除算法(p=L; j=0;与p=p->next;j=1的辨析)
  • Flutter系列教程之(3)——简单的APP实现
  • qtcreator上使用opencv报错
  • 水利工程安全包括哪几个方面
  • MacOS 终端选型
  • 实现分布式限流开源项目
  • 服务器硬件老化导致性能下降的排查与优化
  • 如何基于PyTorch做二次开发
  • 大白话React第六章深入学习 React 高级特性及生态
  • GGUF 文件格式全解析
  • 问题:undefined reference to `pthread_mutexattr_init‘
  • Vue的父子组件通信问题
  • vsCode下载、安装、推荐插件
  • 90.奇妙货币交易问题|Marscode AI刷题
  • 在Linux、Windows和macOS上部署DeepSeek模型的最低配置要求
  • 大白话3Vuex 是什么,具体怎么用?
  • 349. 两个数组的交集
  • django:更新页面但未生效
  • 基于JavaWeb开发的高校食堂点餐系统
  • 做网站哪里接单/淘宝怎么优化关键词步骤
  • 做网站的工作流程/保定关键词优化软件
  • 武汉网站建设哪家强/信息流优化师怎么入行
  • 评价中国建设银行网站/搜索引擎收录入口
  • 饿了么网站开发/竞价推广营销
  • 做电影网站哪个服务器好/百度竞价托管一月多少钱