1

C++ の (メイン以外の) スレッド (pthread) で system() メソッドを使用したいと考えています。例えば、

system("/path/to/some/script.sh");

これは許可されていますか?もしそうなら、それは安全ですか、私が取るべき予防策はありますか?

私が質問している理由は、コード レビュアーから次のコメントがあったからです。

「system() はシングル スレッド プロセスからのみ呼び出すことができるというルールがあります。新しいコードを別のアプリケーションに移動する必要があると思います。」

コメントの最初の文は有効ですか?

4

2 に答える 2

5

のGNU/Linux実装では、コマンド実行中にプロセス信号マスクをsystem変更します。マルチスレッドプログラムでは、たとえば別のスレッドが同時に発生した場合など、厄介な驚きがあります。fork

于 2013-01-18T19:29:32.077 に答える
0

さまざまな理由で、私はそれをしません。シグナル マスクの問題は 1 つにすぎません。

一般にfork、スレッドは複雑な組み合わせであり、注意して取り扱う必要があります。既存のライブラリ関数は、マルチスレッド プログラムを念頭に置いて作成されていない可能性があります。

于 2013-01-18T19:34:45.173 に答える