シナリオ:
要求 (TCP-IP) によってデーモンを開始および停止するデーモン監視アプリケーションを開発しています。setsid()
それを実現するために、フォークした後、親プロセス (監視プロセス) から新しいプロセスを「デタッチ」するために呼び出しています。
監視アプリケーションが作成したプロセスの 1 つを強制終了しようとすると、そのプロセスは機能しなくなります。
これが私のコードです:
int retval;
char* arg_list[] = {
NULL /* The argument list must end with a NULL. */
};
retval = fork();
if (retval == 0)
{
umask(0);
setsid();
execv(LBSDPATH, arg_list);
exit(0);
}
私が理解しているように、機能していない/ゾンビプロセスは、親がまだプロセスに参加していないことを意味します。解決しませんsetsid()
か?