1.1 kill
kill函数是UNIX和类UNIX操作系统中的一个标准库函数,主要用于向指定进程发送信号。
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int signum);
pid_t pid 是进程ID,int signum 是信号的编号。
kill函数的作用是将signum指定的信号发送到pid指定的进程。
pid > 0:将信号发送给进程ID为pid的进程。pid = 0:将信号发送给当前进程所在的整个进程组中的所有进程。pid < 0:将信号发送给进程组ID等于pid的绝对值的进程组中的所有进程。pid = -1:将信号发送给系统中的所有进程,这个进程组号等于pid的绝对值。
kill函数的成功返回值为0,失败返回值为-1
此外,调用kill函数的进程必须有权限向目标进程发送信号。通常,只有root用户才能向所有进程发送信号,而非root用户只能向与自己用户ID相同的进程发送信号
案例
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
int main()
{
pid_t pid;
pid = fork();
if(pid < 0)
{
perror("fail to fork");
exit(1);
}
else if(pid > 0) //父进程的代码区
{
while(1)
{
printf("This is parent peocess\n");
sleep(1);
}
}
else //子进程的代码区
{
printf("This is son process\n");
//子进程在3秒之后,让父进程退出
sleep(3);
//使用kill给父进程发送信号,然后父进程接收到信号后直接退出就可以了
kill(getppid(), SIGINT);
}
return 0;
}
执行结果

1.2 alarm函数
alarm函数是UNIX和类UNIX系统中的一种标准库函数,它的主要作用是为当前进程设置一个定时器。
当设定时间到达后,定时器会向当前进程发送SIGALRM信号。
这个信号的默认行为是终止进程,但如果进程中有一个已注册的信号处理

本文详细介绍了UNIX和类UNIX系统中的六个关键信号处理函数:kill用于发送信号,alarm设置定时器,raise发送信号给当前进程,abort强制进程终止,pause暂停进程,以及signal定制信号处理。每个函数的功能、用法和示例都进行了详述。
最低0.47元/天 解锁文章
2066

被折叠的 条评论
为什么被折叠?



