java sigquit_程序捕获退出信号(SIGINT,SIGQUIT,SIGTERM)

本文介绍了如何在Java中设置信号处理程序来捕获并处理SIGINT、SIGQUIT和SIGTERM信号。通过使用`sigprocmask`和`sigaction`函数,程序能够等待特定信号并确保在此过程中不阻塞其他信号。在接收到信号后,程序会设置全局变量`g_sigreceived`以指示信号已被接收。
摘要由CSDN通过智能技术生成

static volatile sig_atomic_t g_sigreceived=0;

void sig_handler(int signo)

{

printf("signo=%d\n", signo);

if(signo==SIGINT || signo==SIGQUIT || signo==SIGTERM)

{

g_sigreceived=1;

}

}

//功能:等待某个信号返回且不阻塞其它信号

void WaitSingSigAndNoBlockOthers(void)

{

struct sigaction newact,oldact;

sigset_t maskblocked,oldmask;

// set cur handler,save previous information

newact.sa_handler=sig_handler;

sigemptyset(&newact.sa_mask);

newact.sa_flags=0;

// block SIGINT and save current signal mask

sigprocmask(SIG_SETMASK,NULL,&maskblocked);

sigaddset(&maskblocked,SIGINT);

sigprocmask(SIG_BLOCK,&maskblocked,&oldmask);

sigaction(SIGINT,&newact,&oldact);

sigdelset(&am

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值