0

Pythonデーモンを書きました。停止した後、そのサブプロセスがまだ生きていて、pid = 1の親があることがメモリに表示されます。デーモンの停止中にこれらの子プロセスを強制終了するにはどうすればよいですか?

4

2 に答える 2

2

マルチプロセッシング ライブラリを使用している場合は、サブプロセスを開始する前にデーモンフラグを True に設定する必要があります。これにより、親が終了すると終了します。

于 2012-08-15T00:08:10.853 に答える
1

同等の python 呼び出しはわかりませんが、C で受け入れられているポリシーは、子 pid で WNOHANG オプションを指定して waitpid/wait(3) を実行することです。

親 ID が 1 に設定されている => 親プロセスが終了し、子プロセスが孤児になったため、init プロセス。

このためのcコードは次のとおりです

#include <sys/wait.h>
/*
pid_t wait(int *stat_loc);
*/

void makeOrphanPidExit(pid_t pid)
{
   int stat_loc = 0;
   waitpid(pid, &stat_loc, WNOHANG);
}

呼び出すmakeOrphanPidExit(orphanPid)と、子プロセスが孤立したファンクから抜け出します! :)

wait(3) に関するドキュメント - http://linux.die.net/man/3/wait

アップデート:

同等の python 呼び出しは、 http: //docs.python.org/release/3.1.5/library/os.html#os.waitpid に従って `os.waitpid(pid, os.WNOHANG) です。

于 2012-08-14T23:36:32.933 に答える