私のアプリケーションで別のプロセスを開き、popen
を使用してその出力を解析しています。プログラムが成果を上げたらすぐに通知を受けたいと思っています。現在、私のプログラムのすべてのものは、そのようなアクションのためにepoll
を使用しています。今popen
はfd
の代わりにFILE *
を返します。 fileno
関数を使用し、結果としてfd
をepoll
に格納することはできませんか?そうでない場合、別の方法がありますか?私はプロセスをブロックしたくないので、なぜ私は通知をしたいのですか。epollでFILEを使用する
0
A
答えて
0
はい、ファイルディスクリプタで余分なことをしない限り、安全であるように注意しない限り安全です。もう1つのことは、おそらくファイル記述子を非ブロックとしてマークしたいということです。だからあなたはread()
をブロックすることなく、EBUSY
またはEAGAIN
チェックerrno
を処理することができます。
+0
'FILE *'インタフェースのファイル記述子で 'epoll()'を使うのは安全だと思います。しかし、*ファイル記述子を非ブロックとしてマークする*?実際の読み込みが質問で言及されているような 'FILE * 'ベースのstdio関数を介して行われるならば、安全であることは保証されているとは思いません。 'FILE *'の基礎となるファイル記述子を非ブロックにすることは、ライブラリ呼び出しが非ブロック記述子を使うようには設計されていないので、重大な問題を引き起こす可能性があります。 –
関連する問題
- 1. FILE *をiPhoneで使用する方法
- 2. PHPでng2-file-uploadを使用する
- 3. epollはスレッドセーフですか?
- 4. epoll()を使用した短い読み込みの処理
- 5. epollメインループを使用した遅延実行
- 6. epollで2つのacceptイベントを見る
- 7. JDK7 NIO.2はLinuxでEpollなどを使用していますか?
- 8. 最初の使用後にng-file-upload $ fileがnullになる
- 9. epollを使ってハンドラ関数を非ブロック化するには?
- 10. lut-fileの使用方法
- 11. FineUploaderは、qq-file-idを使用してAjaxリクエストをサーバーに送信する(qq-file-idを使用)
- 12. IntelliJでFile Watcherを使用してMakefileを実行する
- 13. Epoll通常のファイル
- 14. epoll recv戻り値
- 15. epoll例外処理
- 16. unixドメインソケットのエッジトリガーepoll
- 17. libuvはepollを使用しているか、unixのselect(2)を使用しています
- 18. CソケットプログラミングでC FILEストリームを使用する
- 19. JavaでPrintWriterクラスとFileクラスを使用するには?
- 20. 控えめなJavaScriptでHTML5 File APIを使用するには?
- 21. ng-file-uploadをgrailsで使用する方法2.5.3
- 22. @ lst-file引数でlupdateを使用するには?
- 23. Visual C++でFile :: ReadAllBytesを使用するには?
- 24. epoll/mutexes/semaphoresを選択
- 25. エッジトリガー非ブロッキングepollを使用したSSL_acceptは常にSSL_ERROR_WANT_READを返します
- 26. なぜPythonでlen(file)を使用しないのですか?
- 27. curlとkey-file(crt、der、txt)を使用
- 28. if loop in docker fileを使用して
- 29. "見つかったNettyのネイティブepollトランスポートをクラスパスで修正する方法はありますが、epollは利用できません。
- 30. 複数のスレッドを使用してCamel File Component Consumerを使用する方法
私はバッファリングされたI/O( 'FILE *')と(e)pollを混ぜることをお勧めします。個人的には、自分自身で 'popen_fd'を書いて、読み込み可能なディスクリプタを返すだけです。 – melpomene