信号(三)Kill函数和Kill命令
一、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命令相关推荐
- linux kill()函数,linux kill函数
虽然从函数的表面意思上看是杀死进程, 但是kill函数不单单只是杀死进程,而是对指定进程或进程组发送指定信号(SIGKILL, SIG). 函数原型如下: int kill(pid_t pid, in ...
- linux的基础知识——信号的四要素和kill
1.信号的四要素 \qquad信号的名字:信号的编号:信号的默认处理动作:信号的事件 2.信号相关命令 \qquad查看linux下的所有信号:kill -l:查看信号文档:man 7 signal. ...
- Linux下的kill函数的用法
功能描述:用于向任何进程组或进程发送信号. 头文件用法: #include <sys/types.h> #include <signal.h> int kill(pid_t ...
- Linux下Kill函数用法
[ KILL ]功能描述: 用于向任何进程组或进程发送信号. 头文件用法: 1 #include < sys / types.h > 2 3 #include < sign ...
- linux 信号9和信号15,kill -9 和 kill -15 的区别
相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能. 但是,怕就怕很多人对于部分命令只是一 ...
- java kill 详解_Kill命令在Java里面详解
Kill -9 不能乱用 kill命令经常使用,并且还经常使用kill -9. 之前面试也有被问kill -3和kill -9的区别是什么. 直到今天看了Hillos的我到服务器执行kill -9后, ...
- mysql超售_MySQL OOM 系列三 摆脱MySQL被Kill的厄运
前面两章,我们分析了Linux内存分配的策略以及Linux通过使用 OOM_Killer的机制解决了"超售"引起的风险,MySQL同其他的应用程序一样,在操作系统允许的范围内也是可 ...
- 信号、signal 函数、sigaction 函数
文章目录 1.信号的基本概念 2.利用 kill 命令发送信号 3.信号处理的相关动作 4.信号与 signal 函数 4.1 signal 函数示例一 4.2 signal 函数示例二 5.利用 s ...
- Linux信号 三 信号发送接口集合
信号发送接口包括raise,kill,killpg,tkill,tgkill,pthread_kill,sigqueue等. 1. raise() /*** raise用于向进程自身发送信号* 成功返 ...
最新文章
- 还在为投文章发愁吗,也许你更适合审别人的文章——JGG期刊专职编辑招聘(IF4)...
- Controller 层实现
- eclipse 设置 按键提示
- 减负提质的新命题下,网易云信如何为课后服务升级?
- 倾斜摄影技术在城市规划行业中扮演着什么样的角色?
- 基于CSS3实现水平轮播效果
- 22_python基础—异常
- 新蓝剑java_Ubuntu 8.10 编译安装飞鸽(IPMsg 0.9.6)
- python3.7.2安装pywifi_在Win10中安装pywifi包
- php fpm 平滑重启,nginx、php-fpm平滑重启和重载配置
- jmeter测试mysql数据库_【JMeter】JMeter完成一个MySql压力测试
- java经典算法(五)---zws
- Mybatis-Plus 基础知识点
- Kerberos认证协议
- 24点游戏的递归解法和Python实现
- php反序列化--字符串逃逸
- shl and shr
- EMC首款企业级SaaS产品亮相 产品策略初见端倪
- WAV音频数组提取器【单片机音频处理】
- 使用Mac端 Charle 抓 ios 包
热门文章
- Opencv For Unity2.3.4 所有场景预览
- 力扣 1137. 第 N 个泰波那契数
- 目标检测实战必会!4种基于YOLO目标检测(Python和C++两种版本实现)
- SAP-ABAP-FBL1H/FBL3H/FBL5H/FAGLL03H等事务代码远程调用时ALV展示与标准不同时布局问题增强修改
- python middleware_Django框架之中间件MiddleWare的实现
- Qt笔记(五十六)之网页调用Activate控件
- java-implements - 线程创建
- 计算机视觉 网站 博客
- html onmouseover 注释掉,HTML onmouseover事件用法及代码示例
- 小学期 校园导游系统2.0