O_DIRECTを設定してコンパイラにおこられたときは

ファイルをopenするときにO_DIRECTのフラグをたてたのですが、なぜかコンパイラにそんなフラグないとおこられた。調べると、

#define _GNU_SOURCE

を書き込むと、コンパイラがフラグを無視してくれるらしい。

まぁ、2.4系のカーネルだとO_DIRECTが無いらしいので、この設定をしておけよと。でも、今日コンパイルした環境はFC5だったんだけどなぁ。というか、フラグ無視するという意味を覚えずに、これをおまじないとして覚えているだけだと、痛い目みるなぁ。直接I/Oを発行しているつもりが、ファイル間でアクセスしてしまい、予想以上に負荷かけてしまった的な。