9

system()fork()関数は、関数、execve()および関数を使用して実装されwait()ます。fork()関数はマルチスレッド プログラムでは危険であると聞いたことがあります。では、このsystem()関数はマルチスレッド プログラムでも危険ですか?

どのような問題が発生する可能性がありますか?

4

3 に答える 3

3

forkは、スレッド化されたプログラムでは危険ですexecve。現在のスレッドのみがフォークされるため、フォークされたマルチスレッド プログラムでできることはexecve. の後にロックを取得していないことを確認する必要がありますfork

+であるため、安全system()なはずです。forkexec

于 2012-11-20T10:49:26.850 に答える
1

fork は実行中のすべてのスレッドをコピーしないため、マルチスレッド プログラムでは危険です。システムでは問題ないはずですが、シグナル ハンドラーと複数のスレッドが wait() を使用している場合、再び混乱が生じる可能性があります。

于 2012-11-20T10:44:10.237 に答える