c - 处理终止信号

标签 c linux signals

我想处理来自 C 程序的 kill signal。 我首先创建一个无限循环并处理信号

void signal_callback_handler(int signum)
{
   printf("Caught signal %d\n",signum);
   // Cleanup and close up stuff here

   // Terminate program
   exit(signum);
}
 main()
{
    signal(SIGINT, signal_callback_handler);
    printf("pid: %d \n",getpid());
    while(1)
    {

    }

}

当我运行这个程序并按 CTRL+C 时,kill 被处理,并且它起作用了。打印消息 Caught signal。 但是,当我试图从另一个程序中杀死时

int main(int argc, char **argv)
{
    kill(atoi(argv[1]), SIGKILL);

    return 0;

}

程序已停止但未处理信号。换句话说,不会打印消息 Caught signal。无限循环刚刚停止。

最佳答案

就是这样:您无法捕捉到 SIGKILL,它肯定会终止您的程序,这就是创建它的目的。

关于c - 处理终止信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43593286/

相关文章:

c++ - Apache 模块共享内存对象

php - 在终端中执行 php 脚本出现权限被拒绝错误

signals - 我可以忽略除以零产生的 SIGFPE 吗?

c - C 中的 fork() 信号子进程和父进程

arrays - C 将宏作为参数指针传递

c - 在 linux c 编程中从 dns 查询获取 SOA 记录的 API 是什么?

c - 程序如何在内存中运行以及操作系统处理内存的方式

c++ - 对签名数据进行逻辑右移

c - Linux:给定一个ID,检查它的PID或TID是否在C中

c++ - 信号系统调用可以与类的 C++ 静态成员一起使用吗?