Kill 函数|学习笔记

简介: 快速学习 Kill 函数

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频Kill 函数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11008


Kill 函数

 

kill 函数

对信号有一定了解之后学习函数,函数可以产生信号,进程给进程发信号。

1、通过 kill 函数进行发信号

可以通过 kill 函数进行发信号

#include <sys/types.h>

#include <signal.h>

int kill(pid t pid, int signum);

kill 函数第一个参数是进程号,第二个参数是信号的编号,给pid进程发送signum信号。

功能:

给指定进程发送信号。

参数:

pid:详见下页

signum:信号的编号

返回值:

成功返回 0 ,失败返回 -1。

2、pid 的取值

pid 的取值有 4 种情况:

pid>0:将信号传送给进程 ID为 pid 的进程。

正常情况下,使用 pid>0的情况,指定进程号就可以。

pid=0:将信号传送给当前进程所在进程组中的所有进程。

pid=0运行一个进程时,产生的进程同属于一个进程组,kill 传递会给进程组所有进程发信号

pid=-1:将信号传送给系统内所有的进程。

只能给同一用户的所有进程发信号,不能给所有进程广播一个信号。

pid<-1:将信号传给指定进程组的所有进程。这个进程组号等于 pid 的绝对值。

例如:pid<-100时给进程组号为100的进程组内所有进程发信号。

例:01_kill.c 父进程给子进程发送信号

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <signal.h>

#include <sys/types.h>

int main (int argc, char *argv[])

{

pid_t pid;

pid = fork();

If(pid<0)

perror(" fork");

if(pid==0)

{

int i = 0;

for(i=0;  i<5; i++)

{

printf("in son process\n");

sleep(1);

}

else

{

printf("in father process\n");

sleep(2);

printf("kill sub process now \n");

kill (pid, SIGINT);

}

Return 0;

}

创建一个子进程之后拥有两个父子进程,经过一段时间,父进程给子进程发送一个信号,把子进程搬过来。

在程序当中 fork 创建一个子进程,在子进程里面 for 循环5秒,每一秒打印一条 in son process ,父进程打印一句话睡两秒。一旦运行这个程序,子进程在循环父进程先睡两秒。

子进程创建五秒之后,父进程 kill sub process now (杀死子进程),方法为调到 kill 函数传子进程的进程号 pid 进去,传二号信号 SIGINT ,父进程两秒之后就发了一个信号,子进程活不过两秒,第二秒的时候就被阻止。

 

相关文章
|
6月前
|
Linux 数据处理
深入了解Linux命令kill:终止进程的艺术
**Linux的`kill`命令详解:高效管理进程的工具** `kill`命令在Linux中用于向进程发送信号,如SIGTERM(默认)和SIGKILL,以终止或影响进程行为。它通过进程ID(PID)操作,支持多种信号和选项,如`-l`列出信号,`-9`强制杀进程。例如,`kill 1234`发送TERM信号,`kill -9 1234`发送KILL信号。使用时注意,SIGKILL是不可忽视的,可能导致数据丢失。配合`pgrep`和`pkill`能更灵活管理进程。了解进程依赖和使用其他命令如`ps`和`top`可优化系统资源管理。
|
7月前
|
Web App开发
kill 终止进程
kill 终止进程。
57 7
|
Linux
Linux进程查看与控制:掌握ps、top、kill等关键命令
在Linux系统中,进程是程序执行的实例,系统中的所有任务都以进程形式运行。了解如何查看和控制进程对于系统管理和故障排除至关重要。本文将介绍Linux下常用的进程查看与控制命令,包括ps、top、kill等,帮助读者熟练使用这些命令来监视和管理系统中的进程。
5562 0
|
安全 Java 应用服务中间件
Kill - 9 or 15 解析
一提到“Kill”命令,大家是不是很兴奋,潜意识觉得自己大展宏图之刻即将到来,仿佛自己就是那个黑暗的夜空下拿着长剑的武士,站在高高的山崖顶层,xx一切。。。别,醒醒吧,孩子(大侠)!大家在停止Java进程时(当然,不仅仅是Java,其他应用也同样适用,本文主要针对Java程序进行解析),有没有想过为什么要用kill -9呢?这样操作对吗?
144 0
|
物联网 Linux 开发者
进程的终止 exit|学习笔记
快速学习进程的终止 exit
|
C++
C++学习007-使用exit退出进程
使用exit可以实现退出当前进程。
216 0