私のシグナルハンドラは次のようになります。
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と評価され、デーモンが終了します。私はこれらの2つの機能を次のように使用することを計画しています。
_start_(); //daemon starts
//computation
_stop_() //daemon stops writing to the file. exits
どうすればこれを達成できますか?問題は、デーモンをから停止できないことです_stop_()
。
ありがとう