2011-11-13 32 views
3

私はオープンを知っているこれらの相互排他的なフラグ:O_RDONLY,O_WRONLYO_RDWRを提供しています。C linuxのみO_WRONLYとO_RDWRの内部の違いがある場合

私が知りたい:ファイルは私だけに書き込みO_RDWR

  • として開かれた場合に任意のパフォーマンスの問題(でもそれをミリ秒のほんの一部です)、またはファイルを処理するさまざまな方法がありますファイル。 (O_WRONLYとしての開き)対
  • 私はファイルからデータを読みます。 (O_RDONLYとして開く)
+4

試しましたか?あなたの結果は何でしたか? –

+0

使用されているフラグに応じて異なるキャッシングまたは先読みルールがあると面白いでしょう。しかし、私はそれが事実だとは思わない。 – Omnifarious

+0

@ carl-norum私は試してみましたが、APIやプログラマティックな違いはありません(O_RDONLYとしてオープンし、書き込みを試みると-1を返し、O_WRONLYとしてオープンして-1を返します)。だからこそ私は – brunoais

答えて

4

最初に、記述の2つのケースでは、書き込み/読み取りタグを誤って(反転した)ように見えます。あなたが尋ねることに関して、VFSは様々な構造において、フラグによって所望のアクセス権を追跡します。読み出し/書き込みフラグは、通常、同じフラグ(マルチ)バイト内の異なるビットである。プロセスが読み取りまたは書き込みとしてアクセスを要求すると、カーネルは要求されたアクセス権を持っているかどうかをチェックし、それに従って処理を進めます。 2ビットを設定しても実行時間は長くならないので、後でアクセスする度に違いはありません。適切なタグを使用することは単にスタイルとファイル保護の一部です。

+0

に質問しました "まず、あなたの記述の2つのケースで誤った(反転した)書き込み/読み取りタグ" Ups、true、fixed "が表示されます。 – brunoais

+0

ケイ、それはアクセス権の実行だけが違うみたいです(そうすれば、私は書き込みを書くことができます(O_WRONLYを使って)ことができ、読み込みができないためアクセスが拒否されません。私はO_RDWRを使用しました) – brunoais

+0

少なくともx86アーキテクチャと2.6カーネルではかなりですが、おそらく他のアーキテクチャや新しい3.xカーネルでもそうです。 – gnometorule

関連する問題