Linux下raise函数,玩玩linux下的kill、raise函数

之前说过kill命令, 我们也知道了, kill命名并没有杀死的意思, 而仅仅是发送信号, 今天, 我们继续学习它的函数形式。 raise这个单词的意思太多, 其中的一个意思是提出、抛出、发出, 实际上raise函数也是发出信号的。 kill和raise有如下等价关系:

kill(getpid(), xxx) 等价于rase(xxx),  意思是, raise函数就是向当前进程发信号的。

好吧, 我们直接看代码:

#include

#include

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编译一下, 然后运行一下, 就可以玩这两个函数了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值