kill,alarm,raise,abort,pause,signal等函数的使用

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信号。

这个信号的默认行为是终止进程,但如果进程中有一个已注册的信号处理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值