在 C 中停止守护进程

问题描述 投票:0回答:1

我的信号处理程序看起来像:

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_()
停止守护进程。

谢谢

c process signals
1个回答
2
投票

_stop_()
函数是从守护进程中的单独进程调用的吗?如果是这样,那么它需要知道要发出信号的进程的 ID。通常的做法是守护进程将其进程 ID 写入一个文件(PID 文件),然后停止守护进程的进程可以读取该文件。

© www.soinside.com 2019 - 2024. All rights reserved.