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

在Linux中如何使用Kill(),向进程发送发送信号

kill()函数

#include <sys/types.h>
#include <signal.h>


int kill(pid_t pid, int sig);

 函数参数和返回值含义如下:
        pid:参数 pid 为正数的情况下,用于指定接收此信号的进程 pid;除此之外,参数 pid 也可设置为 0 或-1 以及小于-1 等不同值,稍后给说明。
        sig:参数 sig 指定需要发送的信号,也可设置为 0,如果参数 sig 设置为 0 则表示不发送信号,但任执行错误检查,这通常可用于检查参数 pid 指定的进程是否存在。

返回值:成功返回 0;失败将返回-1,并设置 errno。

参数 pid 不同取值含义:
如果 pid 为正,则信号 sig 将发送到 pid 指定的进程。
如果 pid 等于 0,则将 sig 发送到当前进程的进程组中的每个进程。
如果 pid 等于-1,则将 sig 发送到当前进程有权发送信号的每个进程,但进程 1(init)除外。
如果 pid 小于-1,则将 sig 发送到 ID 为-pid 的进程组中的每个进程。

代码示例:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<signal.h>int main(int argc , char *argv[])
{int  pid;/*判断传参个数*/if ( 2 > argc ){/* code */exit(-1);/*将传入的字符串转化为整形数字*/pid = atoi(argv[1]);printf("pid:%d\n",pid);/*向pid的指定进程发送信号*/if (-1 == kill(pid,SIGINT)){/* code */perror("kill error");exit(-1);}}exit(0);    
}

以上代码通过 kill()函数向指定进程发送 SIGINT 信号,可通过外部传参将接收信号的进程 pid 传入到程序中,再执行该测试代码之前,需要运行先一个用于接收此信号的进程.

 

相关文章:

  • 编程题 03-树2 List Leaves【PAT】
  • 为什么要选择七彩喜数字康养平台?加盟后有何优势?
  • Oracle版本、补丁及升级(12)——补丁及补丁集
  • 2011-2020年各省粗离婚率数据
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- consistency is the key
  • AI时代的弯道超车之第十二章:英语和编程重要性?
  • 动态规划问题 -- 多状态模型(删除并获得点数)
  • MySQL之基础索引
  • 第二十九节:直方图处理-直方图均衡化
  • Made with Unity | 拓展“双点”宇宙版图
  • 【Python3教程】Python3基础篇之输入与输出
  • Redis学习打卡-Day1-SpringDataRedis、有状态无状态
  • hyper-v安装ubuntu后时磁盘空间扩容
  • 中国近代史1
  • Q1财报揭示:用户增长与客单价下跌对eBay卖家的蝴蝶效应
  • 网络层简单习题
  • 免费Ollama大模型集成系统——Golang
  • gmsh读取 STEP 文件并划分网格
  • 300. 最长递增子序列
  • Linux动态库与静态库
  • 证监会发布《上市公司募集资金监管规则》,6月15日起施行
  • 第一集|好饭不怕晚,折腰若如初见
  • 新闻1+1丨城市,如何对青年更友好?
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元
  • 最新研究:新型合成小分子可“精准杀伤”癌细胞
  • 京东一季度净利增长五成,营收增速创近三年新高,称外卖业务取得显著进展