複雑なメッセージが入ってくるストリームがあり、実際のハンドラに単純な形式で渡される前に処理が必要な場合があります。ファイルディスクリプタの準備を制御する
私はFIFOファイルディスクリプタを使用したいと思います。一方のスレッドは片方のスレッドをもう一方のスレッドは他方のスレッドから読み込みます。今では私が持っているような行動があります:読書スレッドはselect()
で待っています。私は起床時に、read()
への呼び出しで読むことができる完全なパッケージがあることを保証したいと思います。バッファーサイズによる断片化のためにパッケージを再アセンブルする(パッケージはカーネルからユーザー空間へのバッファーの受け渡し制限を下回ることが保証されている)。
ファイルディスクリプタがいつ用意されているか、つまりプロデューサが完全なパッケージを正常に作成したときに、手動で定義できるようにFIFOを構成する方法があるかどうかを知りたいのですが、 (ファイルディスクリプタを介して)読み込みが完了したことを読み込み側に知らせます。 ioctl()
経由でこれを実現する方法はありますか?(Linuxの世界では)この動作を提供するFIFO以外の抽象概念がありますか? (私は約pthread
と条件変数を知っているが、私は、共有ファイル記述子に制限される生産者と消費者との間のカップリングをしたいと思います。)