一、Kill命令

1、Kill命令: kill -信号编号/信号名 pid

2、Kill命令其实是用来发送信号的,我们常用的Kill -9 pid只是给某个进程发送9号信号而已,而不是说杀死该进程。

二、Kill函数

1、作用:给指定进程发送指定信号。(不一定会杀死进程,取决于发送的是什么信号)

2、函数原型、返回值(man 2 kill 查看)

①函数原型:int kill(pid_t pid, int sig);

②返回值:On success (at least one signal was sent), zero is returned.  On error, -1 is returned, and errno is set appropriately.(ID非法、信号非法、普通用户杀死root用户进程)

3、函数参数

①pid:指定进程的进程ID,注意用户的权限,比如普通用户不可以杀死1号进程(init)。

pid>0:发送信号给指定进程

pid=0:发送信号给与调用kill函数进程属于同一进程组的所有进程

pid<0:发送信号给pid绝对值对应的进程组

pid=-1:发送给进程有权限发送的系统中的所有进程

②sig:对于sig参数,建议使用信号名(宏名)而不是信号编号,因为涉及到跨平台的程序时,可能因为不同平台信号编号不同会导致错误。

4、进程组:进程组是一个或多个进程的集合,通常它们与一组作业相关联,可以接受来自同一终端的各种信号。每个进程组都有一个组长,进程组的ID和进程组长ID一致。

5、权限保护:root用户可以发送信号给任何用户,而普通信号不可以向系统用户(的进程)或者其他普通用户(的进程)发送任何信号。普通用户只可以向自己创建的进程发送信号。

三、思考:在命令行执行:cat|cat|cat|cat时,如果杀死第一个cat为什么后面的cat也会关闭?

答:因为第一个cat被杀死后,管道的写端就关闭了,第二个cat读不到数据就返回0,继而关闭,后面的cat类似。

信号(三)Kill函数和Kill命令相关推荐

  1. linux kill()函数,linux kill函数

    虽然从函数的表面意思上看是杀死进程, 但是kill函数不单单只是杀死进程,而是对指定进程或进程组发送指定信号(SIGKILL, SIG). 函数原型如下: int kill(pid_t pid, in ...

  2. linux的基础知识——信号的四要素和kill

    1.信号的四要素 \qquad信号的名字:信号的编号:信号的默认处理动作:信号的事件 2.信号相关命令 \qquad查看linux下的所有信号:kill -l:查看信号文档:man 7 signal. ...

  3. Linux下的kill函数的用法

    功能描述:用于向任何进程组或进程发送信号. 头文件用法: #include <sys/types.h>   #include <signal.h> int kill(pid_t ...

  4. Linux下Kill函数用法

    [ KILL ]功能描述: 用于向任何进程组或进程发送信号. 头文件用法: 1  #include  < sys / types.h > 2  3  #include  < sign ...

  5. linux 信号9和信号15,kill -9 和 kill -15 的区别

    相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能. 但是,怕就怕很多人对于部分命令只是一 ...

  6. java kill 详解_Kill命令在Java里面详解

    Kill -9 不能乱用 kill命令经常使用,并且还经常使用kill -9. 之前面试也有被问kill -3和kill -9的区别是什么. 直到今天看了Hillos的我到服务器执行kill -9后, ...

  7. mysql超售_MySQL OOM 系列三 摆脱MySQL被Kill的厄运

    前面两章,我们分析了Linux内存分配的策略以及Linux通过使用 OOM_Killer的机制解决了"超售"引起的风险,MySQL同其他的应用程序一样,在操作系统允许的范围内也是可 ...

  8. 信号、signal 函数、sigaction 函数

    文章目录 1.信号的基本概念 2.利用 kill 命令发送信号 3.信号处理的相关动作 4.信号与 signal 函数 4.1 signal 函数示例一 4.2 signal 函数示例二 5.利用 s ...

  9. Linux信号 三 信号发送接口集合

    信号发送接口包括raise,kill,killpg,tkill,tgkill,pthread_kill,sigqueue等. 1. raise() /*** raise用于向进程自身发送信号* 成功返 ...

最新文章

  1. 还在为投文章发愁吗,也许你更适合审别人的文章——JGG期刊专职编辑招聘(IF4)...
  2. Controller 层实现
  3. eclipse 设置 按键提示
  4. 减负提质的新命题下,网易云信如何为课后服务升级?
  5. 倾斜摄影技术在城市规划行业中扮演着什么样的角色?
  6. 基于CSS3实现水平轮播效果
  7. 22_python基础—异常
  8. 新蓝剑java_Ubuntu 8.10 编译安装飞鸽(IPMsg 0.9.6)
  9. python3.7.2安装pywifi_在Win10中安装pywifi包
  10. php fpm 平滑重启,nginx、php-fpm平滑重启和重载配置
  11. jmeter测试mysql数据库_【JMeter】JMeter完成一个MySql压力测试
  12. java经典算法(五)---zws
  13. Mybatis-Plus 基础知识点
  14. Kerberos认证协议
  15. 24点游戏的递归解法和Python实现
  16. php反序列化--字符串逃逸
  17. shl and shr
  18. EMC首款企业级SaaS产品亮相 产品策略初见端倪
  19. WAV音频数组提取器【单片机音频处理】
  20. 使用Mac端 Charle 抓 ios 包

热门文章

  1. Opencv For Unity2.3.4 所有场景预览
  2. 力扣 1137. 第 N 个泰波那契数
  3. 目标检测实战必会!4种基于YOLO目标检测(Python和C++两种版本实现)
  4. SAP-ABAP-FBL1H/FBL3H/FBL5H/FAGLL03H等事务代码远程调用时ALV展示与标准不同时布局问题增强修改
  5. python middleware_Django框架之中间件MiddleWare的实现
  6. Qt笔记(五十六)之网页调用Activate控件
  7. java-implements - 线程创建
  8. 计算机视觉 网站 博客
  9. html onmouseover 注释掉,HTML onmouseover事件用法及代码示例
  10. 小学期 校园导游系统2.0