私はfopen(filename、 "w")を呼び出すプロセスコールAを持っているとします。プロセスBはfopen(filename、 "r")を0.2秒ごとに呼び出し、そこからデータを読み込みます。2つのプロセスが同時に1つの "W"、もう1つの "r"を呼び出します。エラーが発生しますか?
Aがデータを書き込んでいる間に、Aプロセスを終了する前に、Bプロセスがそのデータを読み込んで読み込みます。私はそれが同期の問題があると思う!
ミューテックスの使用はスレッドで簡単ですが、プロセス間でミューテックスを試していません。データはたかだか400バイトしかないので、データを書き込むプロセスを回避する簡単な方法と、同時に読む別のプロセス、または1つのプロセスがファイルを開いている間に別のプロセスBがプロセスAがファイルを閉じるまで待ちます。
待機...毎回同じファイルですか、別のファイルですか? – fge
ファイルが2つのプロセスが互いに話すための手段としてのみ使用されている場合は、おそらく異なるプロセス間通信(パイプやソケットなど)を考慮する必要があります – NPE
ありがとう、常に同じファイルです...両方のプロセスで、実際にはプロセスAをソケットサーバーにしていて、ソケットでBを処理するのが好きではないので、ソケット以外の別の方法を使用したいと思います.... pipe isプロセスBがパイプでプロセスAと話す場合、プロセスBが正常に終了すると、プロセスAの重要パイプサーバーとしてプロセスAが破損します。プロセスAからプロセスBへのデータを取得するための安全な方法が必要です。プロセスBからのデータを取得するのにわずか5秒でさえ、私にとってはうまくいくでしょう。 – barfatchen