system()
fork()
関数は、関数、execve()
および関数を使用して実装されwait()
ます。fork()
関数はマルチスレッド プログラムでは危険であると聞いたことがあります。では、このsystem()
関数はマルチスレッド プログラムでも危険ですか?
どのような問題が発生する可能性がありますか?
system()
fork()
関数は、関数、execve()
および関数を使用して実装されwait()
ます。fork()
関数はマルチスレッド プログラムでは危険であると聞いたことがあります。では、このsystem()
関数はマルチスレッド プログラムでも危険ですか?
どのような問題が発生する可能性がありますか?
fork
は、スレッド化されたプログラムでは危険ですexecve
。現在のスレッドのみがフォークされるため、フォークされたマルチスレッド プログラムでできることはexecve
. の後にロックを取得していないことを確認する必要がありますfork
。
+であるため、安全system()
なはずです。fork
exec
fork は実行中のすべてのスレッドをコピーしないため、マルチスレッド プログラムでは危険です。システムでは問題ないはずですが、シグナル ハンドラーと複数のスレッドが wait() を使用している場合、再び混乱が生じる可能性があります。