用C停止守护进程
问题描述:
我的信号处理程序是这样的:用C停止守护进程
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
将被评估为false,并且守护进程退出。 我打算使用这两个功能,如:
_start_(); //daemon starts
//computation
_stop_() //daemon stops writing to the file. exits
我该如何做到这一点?问题是我无法从_stop_()
停止守护进程。
感谢
答
是从您的守护一个单独的进程称为_stop()函数?如果是这样,那么它需要知道要发信号的过程的ID。通常的做法是守护进程将其进程ID写入一个文件(PID文件),该文件可以被停止守护进程的进程读取。
您是否试图用调试器查看程序? – 2012-04-24 03:06:17
请您详细说明一下吗? – Sayan 2012-04-24 03:31:05