using namespace std;
static void sigShow(sigset_t& pending)
{
for(int sig = 1;sig <= 31;sig++)
{
if(sigismember(&pending,sig)) cout << "1";
else cout <<"0";
}
cout<<endl;
}
static void catchSig(int signum)
{
cout << "捕获信号:" << signum << endl;
}
int main(int argc,char* argv[])
{
signal(SIGINT,catchSig);
sigset_t bset,obset;
sigset_t pending;
sigemptyset(&bset);
sigemptyset(&obset);
sigemptyset(&pending);
sigaddset(&bset,2);
int n = sigprocmask(SIG_BLOCK,&bset,&obset);
assert( n == 0);
(void)n;
cout << " 设置2号block成功, pid: " << getpid() << endl;
int count = 0;
while(true)
{
sigpending(&pending);
sleep(1);
sigShow(pending);
count++;
if(count == 20)
{
cout << "解除对2号信号的block" << endl;
int n = sigprocmask(SIG_SETMASK,&obset,nullptr);
assert( n == 0);
(void)n;
}
}
}
Linux--.如何让我们看到输出结果的比特位由0变成1
最新推荐文章于 2024-07-23 13:03:02 发布