3
私のすべての子プロセスが使用するパイプがありますが、子プロセスでパイプを使用して親プロセスと通信する前に、 。これを行うにはC言語で単純な関数がありますか?Cのパイプを簡単に消去する方法はありますか
私のすべての子プロセスが使用するパイプがありますが、子プロセスでパイプを使用して親プロセスと通信する前に、 。これを行うにはC言語で単純な関数がありますか?Cのパイプを簡単に消去する方法はありますか
パイプを "クリア"する方法は、バッファが空になるまでパイプを読み取ることです。これはあなたを助けません。私はあなたの本当の問題は、親が複数のクライアントから混在しているデータを読むかもしれないと推測しています。あなたの問題には2つの簡単な解決策があります。
常に未満PIPE_BUF
バイト長のメッセージを書き、そしてwrite
への単一の呼び出しでこれを行います。これにより、パイプへの書き込みが確実にアトミックになります。
子プロセスごとに個別のパイプを使用します。サーバー側では、スレッドを使用するか、select
またはpoll
で非ブロッキングIOを使用してください。同様に、Unixドメインソケットを使用して、各クライアントをソケットに接続させることもできます(これは実際には別々のパイプを作成する別の方法です)。
ありがとうございました。 –