パイプを介して通信する2つのプロセス(親と子)があります。親は子が終了するのを待っていて、次にパイプの読み込み側からデータを読み込みます。子供は非常に多くの出力を生み出すことがあります。あまりにも多くの未読データがあるためにパイプが失敗し、子供の出力の一部が失われる可能性はありますか?パイプがオーバーフローする心配はありますか?
答えて
標準の2.6または3.0カーネルでは、パイプバッファーは64kです。バッファーがいっぱいになると、最初のプロセスは書き込み時にブロックされます。
一方で、これは少なすぎる場合には、構成可能なメモリサイズが2人の労働者の間にbuffer
を、使用
バッファーがいっぱいになると2番目のプロセスが終了せず、2番目のプロセスが終了するまでバッファーから何も読み取られないため、これを心配しなくてはなりません。それはデッドロックです! –
私の編集を参照してください:あなたのバッファサイズを調整するのに 'buffer'を使用してください。 –
パイプがいっぱいであれば書き込みプロセスがブロックされますが、Linuxバージョンもパイプバッファーのサイズもその動作に影響しません。 –
はい、パイプが子プロセスのブロックをいっぱいにして、デッドロックを取得する場合。
これはPythonでも発生する問題です。Popen.wait()の[1]のセクション17.1.2の警告を参照してください。彼らは問題を回避するために通信方法を使用しました。
- 1. モバイルアプリでスパムを心配する必要はありますか?
- 2. 空のパイプをパイプすると、1のカウントがあります
- 3. ES6での破壊。私は心配する必要がありますか?
- 4. Macのアプリケーション開発でメモリリークが心配する必要はありますか?
- 5. このエラーログについて心配する必要がありますか?
- 6. NSUserDefaultsの衝突について心配する必要がありますか?
- 7. この警告メッセージで心配する必要がありますか?
- 8. フレックスボックスはIE 11でオーバーフローする必要があります
- 9. Node.jsのConcurrent Modificationについて心配する必要はありますか?
- 10. アプリケーションのタイムゾーンについて心配する必要はありますか?
- 11. カスタムNSURLProtocolはリダイレクトされる必要がありますか、またはクライアントがそれを心配する必要がありますか?
- 12. vimバッファをlprにパイプする方法はありますか?
- 13. ファイル名をtarにパイプする方法はありますか?
- 14. パイプ()がC++の配管パイプ
- 15. ユーザーがCookieを無効にするのを心配する必要はありますか?
- 16. 新しいバージョンのeclipse(indigo)とnetbeans(7.0)が同じPCにあることに心配はありますか?
- 17. なぜこの乗算に整数オーバーフローがありますか?
- 18. RabbitMQの配信タグがオーバーフローするとどうなりますか?
- 19. Windows APIに名前のないパイプがありますか?
- 20. Zend \ db \ sql - prepareStatementForSqlObject - SQLインジェクションをバインドするか心配する必要がありますか?
- 21. Android 3.0+ ActionBarの「オーバーフロー」ビューはありますか?
- 22. SQL Serverのページとは何ですか?心配する必要はありますか?
- 23. スタックサイズやオーバーフローの可能性があるメソッドが多すぎる可能性はありますか?
- 24. ActiveRecordのロックについてはいつ心配する必要がありますか?
- 25. 角パイプに制限はありますか?
- 26. redis cliにパイプの概念はありますか?
- 27. パイプでサービスするプロバイダがありません
- 28. Flask(WSGI)でグローバルシングルトンを使用すると、競合状態を心配する必要がありますか?
- 29. コマンドラインからNodeJにスクリプトをパイプする方法はありますか?
- 30. npmスクリプトからbashエイリアスにパイプする方法はありますか?
このような理由はありますか?プロセスが一度に一方向にしか通信しない場合は、パイプを使用する必要はありません。なぜ親がランダムなファイル名を生成して、そのファイルに子を書き込ませるのではないでしょうか? – frankc