2011-10-27 31 views
3

systemuページは言う:open3の代わりにsystemuを使用するメリットはありますか?

systemuは、ステータス、stdout、および任意のコマンドの標準エラー出力を返すために、任意のプラットフォーム上で使用することができます。 open3/popen4のような他のメソッドとは異なり、フルパイプやスレッドの問題がプロセスやサブプロセスにぶつかる危険性はゼロです。

(https://github.com/ahoward/systemu)

誰もがこれを少し説明してもらえますか?

答えて

2

メソッドlike popenとそのさまざまなスピンオフが便利で、完全なI/Oライブラリの期待されるAPIの一部です。

ただし、デッドロックが発生する可能性があるため、気軽にまたは慎重に使用する必要があります。私はあなたがコマンドを書いたり読んだりすると、たくさん書かないか、たくさん読んでいない限り、それでも問題はありません。注意深く言えば、大量のデータを移動することができますが、操作の内部の細部を念頭に置いて、デッドロックに対して意図的にエンジニアリングする場合に限ります。

が入力されたコマンドにたくさんのものを書き込んで、結果を読み取ったとします。パイプ以上に書き込みを行うと、プロセスがスリープします。ほとんどの場合、それは実際には問題ありませんが、コマンドが多くのことを書く必要がある場合はどうなりますか?今すぐそれはあなたが送信している入力を読み取って眠ることはできません。あなたは決して目を覚まさずに結果を読むことができないように入力を終わらせません。

デッドロック!

関連する問題