我的信号处理程序如下所示:
volatile sig_atomic_t loop = 1;
void handle()
{
loop = 0;
}
而且,我有一个守护进程,就像:
void _start_()
{
...
sa.sa_handler = handle;
sigaction(SIGINT, &sa, NULL);
while(loop)
{
//add a line to a file
}
...
}
我想要stop
守护进程,来自另一个函数,例如:
void _stop_()
{
raise(SIGINT);
}
我的想法是,不知何故,如果 的值为loop
0,那么while
将被评估为假,并且守护程序退出。我打算使用这两个功能,例如:
_start_(); //daemon starts
//computation
_stop_() //daemon stops writing to the file. exits
我怎样才能做到这一点?问题是我无法从_stop_()
.
谢谢