1.信号的四要素

\qquad信号的名字;信号的编号;信号的默认处理动作;信号的事件

2.信号相关命令

\qquad查看linux下的所有信号:kill -l;查看信号文档:man 7 signal。一共有64个信号。linux常规信号一览表

 1) SIGHUP    2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP6) SIGABRT    7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

3.信号的默认动作

动作 意义
Term 终止进程
lgn 忽略信号
Core 终止进程,生成core文件
Stop 停止(暂停)进程
Cont 继续运行进程

\qquad对于信号的处理,有执行默认动作,忽略和捕捉,其中 9)SIGKILL和 19)SIGSTOP,不允许捕捉和忽略,只能执行默认动作。

4.信号的产生

4.1 终端按键产生信号
按键操作 信号 说明
ctrl + c 2:SIGINT(终止/中断) INT:interrupt
ctrl + z 20:SIGTSTP(暂停/停止) T:terminal STP:stop
ctrl + \ 3:SIGQUIT(退出)
4.2 硬件异常产生信号
异常操作 信号
除0操作 8:SIGFPE
非法访问内存 11:SIGSEGV(段错误)
总线错误 7:SIGBUS
4.3 kill函数或者kill命令产生信号
4.3.1 kill命令产生信号
kill -9 10624  // 给进程10624发送9)SIGKILL信号
4.3.2 kill函数

\qquadint kill(pid_t pid,int sig)
\qquad功能:给指定进程发送指定信号(不一定杀死)
\qquad返回值:成功返回0;失败返回-1
\qquad参数:第一个参数:pid>0,发送信号给指定进程;pid=0,发送信号给与调用kill函数进程属于同一进程组的所有进程;pid<0,取|pid|发送给对应进程组;pid=-1,发送给进程有权发送的系统中的所有进程。 第二个参数:sig不推荐使用数字,建议使用宏名
\qquad举例:调用kill函数,自己把自己杀死

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>int main()
{int ret = kill(getpid(),SIGKILL);if(ret==-1){perror("kill error!");exit(1);}return 0;
}

5.举例

\qquad创建5个子进程,然后依次杀死

#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include<errno.h>
#include<stdlib.h>
#include <sys/types.h>
#include <signal.h>int main()
{pid_t pid,q[5];int i;for(i=0;i<5;i++){pid = fork();if(pid==-1){perror("fork error!");exit(1);}else if(pid==0){break;}q[i]=pid;}if(i<5){while(1){printf("i am child %d,getpid()=%d\n",i,getpid());sleep(1);}}else{for(i=0;i<5;i++){sleep(2);kill(q[i],SIGKILL);}}return 0;
}

linux的基础知识——信号的四要素和kill相关推荐

  1. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  2. linux的基础知识——信号的概念

    1.计算机信号的特点 \qquad简单:不能携带大量信息:满足某个特设条件才发送 2.信号的机制 \qquadA与B两个进程,A向B发送一个信号,此时B进程正在执行自己的程序,在收到信号时,会暂停程序 ...

  3. Linux操作系统基础知识学习

    Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...

  4. Linux驱动 简单的Linux驱动基础知识

    Linux驱动 简单的Linux驱动基础知识 一.简述         记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...

  5. Linux系统基础知识

    Linux系统基础知识 1.在Linux系统中,以文件方式访问设备.   2. Linux内核引导时,从文件 /etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用 ino ...

  6. linux系统下io的过程,Linux系统基础知识:IO调度

    Linux系统基础知识:IO调度 IO调度发生在Linux内核的IO调度层.这个层次是针对Linux的整体IO层次体系来说的.从read()或者write()系统调用的角度来说,Linux整体IO体系 ...

  7. 权限认证php,2016年Linux认证基础知识:php做权限管理

    2016年Linux认证基础知识:php做权限管理 在学习Linux认证过程中,每个人会遇到每个人不同的问题,或小或大,那么你知道在Linux下,php怎么做权限管理?下面跟yjbys小编来看看最新的 ...

  8. Linux常用基础知识必备三之常用指令及操作

    Linux常用基础知识必备三之常用指令及操作 1.vi和vim vi如何使用 vi几种模式下的操作指令 命令模式进入编辑模式 命令模式下的快捷键 底行模式(指按了esc键之后输入按键:后出现) 字符串 ...

  9. Linux入门基础知识

    注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...

最新文章

  1. 海量数据库解决方案2011032301
  2. 图像清晰度的评价及分析
  3. POJ 1002 487-3279
  4. 对于已经加入版本控制的文件,我们可以强制忽略文件git update-index --assume-unchanged local.properties...
  5. 视频质量,分辨率,码率之间的关系 2
  6. Flask集成Markdown文本编辑器
  7. 技能梳理27@体感机械臂
  8. 王者战力查询教程,每天可查,数据准确~
  9. latex公式斜体_latex输入斜体
  10. 电脑卡怎么办?4招帮你解决电脑卡顿的烦恼!
  11. 主题美化 —— IAR篇
  12. 运营推广一款新的app到底需要哪些完整步骤?
  13. K - Kinds of Fuwas----(2015 summer training #4 (Qualifying))
  14. 团队管理的“五大核心要素”,非常重要!
  15. 主机上没有虚拟机网络适配器VMnet8解决办法
  16. 计算机配置35%卡住不动了,大师教你win7 update更新卡住35%不动应该怎么解决
  17. 什么是Python之禅?
  18. 【人工智能项目】ImageNet数据集介绍以及数字图像处理技术
  19. 朗伯余弦定律(Lambert‘s Cosine Law)
  20. 雅虎非法监控邮件内容 在美国面临集体诉讼

热门文章

  1. LeetCode 954. 二倍数对数组(map计数)
  2. LeetCode MySQL 1440. 计算布尔表达式的值(case when then else end)
  3. 公安计算机技能测试题库,2018公安文职考试题库:行政职业能力测验
  4. Log4j框架配置文件
  5. java的常用引用类、数组、String类
  6. 不同电脑 命名管道_电脑键盘上的F1到F12,这些键都有哪些用处?用了5年总算明白了...
  7. 知识图谱入门视频(一)
  8. Java多线程系列(二):线程的五大状态,以及线程之间的通信与协作
  9. 最新阿里内推高级Java面试题
  10. 论文浅尝 | TANDA: Transfer and Adapt Pre-Trained Transformer Models