第13课-信号通讯

1.信号:在Linux中信号也是最为古老的通信机制
2.信号处理流程:
(1)选择信号
(2)发送信号
(3)处理信号

3.信号类型:

(1)SIGHUP:终端发出的结束信号
(2)SIGINT:键盘中断信号
(3)SIGKILL:结束接收信号的进程(杀死进程)
(4)SIGTERM:kill命令发出的信号
(5)SIGSTOP:暂停进程
(6)SIGCHLD:子进程停止或结束的时候用来通知父进程
4.忽略信号:有些信号可以被忽略,但是SIGKILL和SIGSTOP不可忽略,他们是要终止和停止进程。
5.执行用户希望的操作:内核响应信号的时候调用相应的用户函数。
6.执行默认操作:大多是终止进程
7.函数学习

6.1 发送信号

6.1.1 函数名
Kill
6.1.2 函数原形
int kill(pid_t pid, int sig);
6.1.3 函数功能
向进程发送信号
6.1.4 所属头文件
<sys/types.h>
<signal.h>
6.1.5 返回值
成功:返回0
失败:-1
6.1.6 参数说明
Pid大于0的时候指向接收信号的进程
sig指明要发送的信号(上述信号类型)

6.2 处理信号

6.2.1 函数名
Signal
6.2.2 函数原形
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
6.2.3 函数功能
设置信号的处理方式(处理函数)
6.2.4 所属头文件
<signal.h>
6.2.5 返回值
成功:返回处理函数的指针
失败:SIG_ERR
6.2.6 参数说明
Signum指定要处理的信号
Handler处理信号的函数指针。可以取值:SIG_IGN,SIG_DFL,具体函数名


8.补充:
(1)kill函数式自己对自己或者自己对别人都可以,但是raise函数只能自己对自己发信号。
(2)kill函数的pid:
--》大于0:发送给PID指定的进程
--》等于0:发送给同组进程
--》小于0:发送给同进程组ID为|PID|的进程
--》等于-1:发送给所有进程


(3)raise原型:
int raise(int sign0)


(4)pause函数:使进程挂起,直到捕捉到信号,只有执行了一个信号处理函数以后,才会结束挂起。


(5)atoi(char * str)将字符串转换为整数。




9.接收信号的进程
(1)设置信号处理方式
(2)等待信号接收(信号捕捉),要用到PAUSE函数




10.发送进程:发送进程

时间: 2024-11-04 16:19:31

第13课-信号通讯的相关文章

第三季-第15课-信号通讯编程

第15课-信号通讯编程 15.1 核心理论 1. 信号 在古老的战场上,信号是最有效,最直接的通讯方式:在linux系统中,信号(signal)同样也是最古老的进程间通讯机制. 2. 信号处理流程 进程A/内核---(1)选择信号-----(2)发送信号-----(3)处理信号----进程B. 3. 信号类型 Linux系统支持的所有信号均定义在/usr/include/asm/signal.h(展示),其中常见的信号有: SIGKILL:杀死进程 SIGSTOP:暂停进程 SIGCHLD:子进

安卓学习第13课——BaseAdapter

BaseAdapter创建这么一个对象,需要些四个方法. int getCount(); Object getItem(int position); long getItemId(int position);View getView(int position, View convertView, ViewGroup parent);(1)列表中的项数(2)返回值的列表内容(3)获得postion处的列表项的ID(4)该列表项里的组件 package com.example.baseadapter

信号通讯编程,王明学learn

信号通讯编程 在Linux系统中,信号(signal)同样也是最为古老的进程间通信机制. 一.信号类型 Linux系统支持的所有信号均定义在/usr/include/asm/signal.h(展示),其中常见的信号有: SIGKILL:杀死进程 SIGSTOP:暂停进程 SIGCHLD:子进程停止或结束时用来通知父进程 二.函数学习 2.1 发送信号 2.1.1 函数名 kill 2.1.2 函数原形 int kill(pid_t pid,int sig); 2.1.3 函数功能 向进程发送信号

Spark3000门徒第13课Spark内核架构解密总结

昨晚听了王家林老师的第13课Spark内核架构解密,课堂笔记如下: executor中线程池并发执行和复用,Spark executor, backed by a threadpool to run tasks. 默认一个work为一个Application只开启一个executor.一个worker里executor是多点好还是少点好,看具 体情况. Worker:管理当前Node机器资源,并接受Master的指令来分配具体的计算资源Executor(使用ExecutorRunner 在新的进

信号通讯编程

1.核心理论 信号类型:linux系统支持的所有信号均定义在/usr/include/asm/signal.h中,其中常见的信号有: SIGKILL:   杀死进程 SIGSTOP: 暂停进程 SIGCHLD:子进程停止或结束时用来通知父进程 2.函数学习 发送信号 函数名:kill 函数原型:int kill(pid_t pid, int sig); 函数功能:向进程发送信号 头文件:<sys/types.h> <signal.h> 返回值:成功:0  失败:-1 参数说明:pi

linux_c开发(5-3)进程间通讯_信号通讯

信号通讯 信号(signal)机制是UNIX系统中最为古老的进程间通信机制,有很多条件可以产生一个信号: 1. 当用户按某些按键时,产生信号. 2. 硬件异常产生信号:除数为零,无效的存储访问等等.这些信号通常有硬件检测得到,将其通知内核,然后内核产生适当的信号通知进程,例如: 内核对正在访问一个无效存储区的进程产生一个SIGSEGV信号. 3.进程用kill函数将信号发送给另一个进程. 4. 用户可以用kill命令将信号发送给其他进程. 信号类型 几种常见的信号 SIGHUP: 从终端发来的结

初步理解Python进程的信号通讯

Reference: http://www.jb51.net/article/63787.htm 信号的概念 信号(signal)--     进程之间通讯的方式,是一种软件中断.一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号. 几个常用信号: SIGINT     终止进程  中断进程  (control+c) SIGTERM   终止进程     软件终止信号 SIGKILL   终止进程     杀死进程 SIGALRM 闹钟信号进程结束信号 SIGTERM和SIGKILL的区

13.无名管道通讯编程

? 1.进程间的通信: Linux作为典型的多进程操作系统,进程与进程之间肯定需要信息交流,这就需要进程通信. 2.进程通信的目的: ????1.数据传输:一个进程需要将数据发送给另一个进程. ????2.资源共享:多个进程之间共享同样的资源. ????3.通知事件:一个进程需要向另一个/组进程发送信息,通知他们发生了某些事情. ????4.进程控制:有些进程希望完全控制另一个进程的执行,例如Debug进程.此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道他的状态改变. ? 3.通讯

第81课 信号与槽的连接方式

1. QObject::connect函数 bool connect(const QObject* sender, //发送者 const char* signal, //信号 const QObject* receiver, //接收者 const char* method, //槽函数 Qt::ConnectionType type = Qt::AutoConnection);//连接方式 2. 深入信号与槽的连接方式 (1)Qt::DirectConnection(直接连接,立即调用):直