くだらねえ質問はここに書き込め! Part165at LINUX
くだらねえ質問はここに書き込め! Part165 - 暇つぶし2ch922:login:Penguin
08/07/25 13:35:09 VHMpv0v7

二つのプロセスが、早い者勝ちであるファイルを作っている。
二つのgccが早い者勝ちで同じ a.out を作っている、とかね。

この場合なんだけど、
このファイル更新処理をアトミックでやる最善の方法は?
何が言いたいかというと、プロセスAがもう出力を始めたのに、
プロセスBがそれを上書きするような事態は避けたい。

たとえば、同じパスにa.out.$pid とかを作って、
それを rename(2) する、という方法だと、
別プロセスの方が先にファイルを作っていても、それを上書きしちゃう。

いまは、ファイル出力前に、a.out を touch して、
その有無をある種のLock Fileの様につかい、
あとは普通に a.out.$pid から rename してるんだけど、
これだと、
touch した直後にプロセスがコケるとデッドロックしちゃうし、
なにより、二つに処理を分けるのがカッコわるい。

一撃でアトミックにやる方法は?




次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch