2011-10-20 9 views
2

こんにちはすべて私はflockfile関数についての質問をしたいと思います。記述を読んで、スレッドで使用されていることを知りました。しかし私はフォークを行っています。つまり、スレッドではなく、異なるプロセスでflockfileを使うことができます。はflockfile関数をプロセスに使用することができます

おかげで

答えて

1

これらの関数は、唯一のプロセス内で使用することができます。 POSIX docsから

:要約

、他のスレッドと標準入出力ストリームを共有するスレッドは(flockfile関数を使用することができる)とfunlockfileも()バンドル維持される単一のスレッドによって実行されるI/Oのシーケンスを生じさせます。

このページの残りの部分では、スレッド間の相互排除について説明しています。異なるプロセスはファイルストリームの入出力バッファが異なりますが、このロックは実際には意味がありません。

3

flockfile関数はファイルをロックしませんが、プロセスがファイルにアクセスするために使用するデータ構造はFILEです。これは、プロセスがファイルを持っているアドレス空間の表現であり、必ずしもファイルそのものに関するものではありません。

でも同じファイル上で開い異なるFILE秒を持っている場合、プロセスで、あなたはflockfileによってFILE Sのそれぞれをロックした場合でも、そのファイルに同時に書き込むことができます。

ファイル自体をロックするには、flocklockfを参照してください。ただし、同じプロセスの異なるスレッドを介したアクセスファイルに対する影響の規則は複雑です。

関連する問題