おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2006年11月21日(Tue) 山頂見えるよー [長年日記]

今日のLogwatch

昨日の変更でpostfixからのメッセージは抑制できた。が、

という見なれないメッセージが。ハードウェアがおかしいのかな…。嫌だなあ。(しかし調べる時間はない。)

[run] 76+行き止まり+最短周回逆走+CSO 7.56マイル 1時間02分46秒 8.3分/マイル

昨日は走れなくて今日は暖気15分ほど。最初横っ腹が痛くて次に呼吸器系が不調。復調するのにはやはり40分ほど走らないといけない。

左親指の血豆が大きくなってきた気がする。靴に何か細工したほうがいいのかな。

今日の仕事メールの残数537。昨日より20通増えました。やっぱり気のせいじゃなかったか…

LOCK_UNするのはいつ?

ストリームをflock(fd, LOCK_EX)してデータを書き込んだあと、fclose(fd)、いや正確にはfflush(fd)する前にflock(fd, LOCK_UN)してはいけないだろうと思う。バッファにデータが残ってるうちに他のプロセスがストリームを読もうとするかもしれないし、他のプロセスがロックを取ってからバッファに残っていたデータが書き出されちゃうかもしれない、と思う。でも。このことをあらわに説明してある文書はみつけられないし、試しにプログラムを作ってみても期待通りにロックできているように見えちゃう。そんなもんなのかな…

ストリームのバッファの大きさを得る

この過程で、glibcではストリームのバッファの大きさを__fbufsize(fd)で得られることに気づいた。manページは stdio_ext(3)。

本日のツッコミ(全1件) [ツッコミを入れる]
> okuji (2006年11月22日(Wed) 04:19)

flockはシステムコールで、fcloseはstdioの一部なので、混ぜたら危険です。stdioを使うなら、flockfileを使います。funlockfileは勝手にfflushするはずなので、明示的に同期を取る必要はなかったと思います。システムコールしか使わなければユーザレベルでのバッファリングは(自分で作らなければ)ないので、いずれにしてもフラッシュする必要はありません。やらないといけなくなるのは混ぜる場合だけではないでしょうか。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>