open3の代わりにsystemuを使う利点?

systemuページには、

systemuはどのプラットフォームでも、どのコマンドでもステータス、stdout、stderrを返すことができます。 open3/popen4のような他のメソッドとは異なり、あなたのプロセスやサブプロセスにぶつかるフルパイプやスレッディングの問題はありません。

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

誰もこれを少し説明できますか?

3

1 答え

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

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

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

デッドロック!

2
追加された