posix_spawnp を使用して、メイン プロセスから子プロセスを生成します。
int iRet = posix_spawnp(&iPID, zPath, NULL, NULL, argv, environ);
if (iRet != 0)
{
return false;
}
子プロセスがエラーなしで生成された後、突然機能しなくなることがあります。これはどのように発生する可能性がありますか?
シグナル ハンドラーを使用して、子プロセスを取得します。
void SigCatcher(int n)
{
while(waitpid( -1, NULL, WNOHANG ) > 0);
}
子プロセスを強制終了するたびに手動で呼び出します。
kill(oProcID, SIGKILL);
signal (SIGCHLD, SigCatcher);
これにより、生成された子供が機能しなくなる可能性がありますか (私が kill を呼び出さずに)。