O_CREAT | O_EXCLの役割


今日Linux Cプログラミングの第6章を見て、アヒルはまた1つの問題を発見しました==
OpenではO_をよく使いますCREAT | O_EXCL(「yaya.c」,O_CREAT|O_EXCL,S_IRUSR|S_IWUSR);O_CREAT:ファイルが存在する場合は使用し、存在しない場合は新規O_EXCL:ファイルが存在するかどうかをチェックし、存在しない場合は新規、存在する場合はエラーメッセージを返す
アヒルがファイルを開けたいだけなら、O_を直接使います.CREATでいいんじゃないですか?必ずO_を使いますCREAT|O_EXCLですか?
まず、次の例を見てみましょう(あるフォーラムから抜粋).
        :              ,          。
              ,        。
        ,              ,              。

          O_EXCL   open()        。
              ,             。
                   ,  open()  ,    。

     O_EXCL  ,           :
if( access(file, R_OK) == -1 )
  open(file, O_RDWR | O_CREAT,0666);
...

            ,                          。
    1  access,         ;
             ,  122          。

      :      open     ,      。                 。

この例では、O_を単独で使用していることがわかります.EXCLと使用O_CREAT | O_EXCLの違い:O_単独使用CREATは、open()を呼び出すのに適しており、ファイルが存在するかどうかにかかわらず、ニーズを満たすことができるシーンです.ただOpen以降は、このファイルが本来存在するのか新築されたばかりなのかはわかりませんが、このようなニーズがあれば、O_を使用したほうがいいです.CREAT | O_EXCL. アヒルはやはりこのような方法が正常な思考に合っていると考えており、プログラマーにもっと多くの情報を提供することができます.ネットで見たらO_CREAT | O_EXCLは原子操作(神馬???
    (atomic operation)                。

しかし、この説を確定する資料はまだ見つかっていません...うん、葛藤しないで、とにかく今知ってるO_CREAT | O_EXCLの役割を果たしました^^;***19 16:20