4

CでFIFOを開くのに問題があります。最初にアクセス許可:0777でmkfifo()関数を使用してFIFOを作成しましたが、それらを開こうとすると、最初のFIFOのみを開くことに成功し、プロセスがスタックします。 2番目のFIFOを開くと、これが私のコードです。

fd1 = open("FIFO1_PATH", O_WRONLY );
fd2 = open("FIFO2_PATH", O_WRONLY );

これは実行されませんが、2行目をコメントすると実行されます!プロセスごとに開くFIFOの数に制限はありますか?なぜこれが起こっているのかわかりません..問題が何であるかを理解するために3時間費やしただけですが、結果はありません:(

4

2 に答える 2

5

私はちょうどそれを正しくしました:)

他のプロセスが読み取り用にFIFOを開くまで、開いているプロセスを待機させる必要があります(読み取りがブロックされます)。書き込みプロセスでスリープを実行することにより、他のプロセスが読み取り用に開くようにします。

于 2010-12-30T11:10:31.177 に答える
0

制限についての質問に答えるために-Linuxのデフォルトはプロセスの1024ファイル記述子です。あなたの問題はおそらく読み取り用に2番目のFIFOを開いていないので、ブロックを書き込むために開いています。

于 2010-12-30T10:59:29.973 に答える