本文主要是介绍玩玩linux下的kill、raise函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
之前说过kill命令, 我们也知道了, kill命名并没有杀死的意思, 而仅仅是发送信号, 今天, 我们继续学习它的函数形式。 raise这个单词的意思太多, 其中的一个意思是提出、抛出、发出, 实际上raise函数也是发出信号的。 kill和raise有如下等价关系:
kill(getpid(), xxx) 等价于rase(xxx), 意思是, raise函数就是向当前进程发信号的。
好吧, 我们直接看代码:
#include <stdio.h>
#include <signal.h>void sig_callback1()
{printf("signal: SIGUSR1\n");
}void sig_callback2()
{printf("signal: SIGUSR2\n");
}void sig_haha()
{printf("heng, i do not terminate the process, so what?\n");
}int main()
{ // 用户定义信号if(SIG_ERR == signal(SIGUSR1, sig_callback1)){printf("error1\n");return 1;}// 用户定义信号if(SIG_ERR == signal(SIGUSR2, sig_callback2)){printf("error2\n");return 1;}// SIGTERM信号的默认操作是杀死进程, 但程序员完全可以改变这个默认操作, 说白了, 就是改变信号到函数的映射关系if(SIG_ERR == signal(SIGTERM, sig_haha)){printf("error3\n");return 1;}while(1){getchar();kill(getpid(), SIGUSR1); // 向当前进程发送SIGUSR1消息getchar();raise(SIGUSR2); // 向当前进程发送SIGUSR2消息}return 0;
}
gcc编译一下, 然后运行一下, 就可以玩这两个函数了。
这篇关于玩玩linux下的kill、raise函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!