いっしょにtalk C栗(第百三十九回:C言語例--ファイル操作:ファイル記述子二に基づく)


皆さん、こんにちは、前回はファイル記述子に基づいてファイル操作を行った例をお話ししましたが、今回はこの例を続けてみましょう.余談はさておき,話は本筋に戻る.一緒にtalk C栗を食べましょう!
前回ではファイル記述子について説明しましたが、今日はファイルオペレータでファイルを操作する方法についてお話しします.
ファイル操作には主に次の3つのステップがあります.
  • 1.ファイルを開く
  • 2.ファイルの読み取り/書き込み
  • 3.ファイルを閉じる
    ファイル操作の3ステップ曲と呼ばれています.開く、操作する、閉じる.Linuxシステムでは,この3ステップ曲はシステム呼び出しによって実現される.次に、ファイル操作に関連するシステム呼び出しについて説明します.
    ファイルを開くシステムコール
    int open(const char *pathname, int flags); 
    int open(const char *pathname, int flags, mode_t mode);(    open)
  • この関数は、ファイルを開くか、新しいファイルを作成するために使用されます.
  • この関数の最初のパラメータは、開くファイルまたは作成するファイルを表すファイル名です.
  • この関数の2番目のパラメータはファイルを開く方法であり、詳細は以下の説明を参照してください.
  • この関数の3番目のパラメータは、新しいファイルを作成した後、新しいファイルが持つ権限です.
  • この関数が正常に実行されたときにファイル記述子が返されます.実行に失敗した場合は-1を返し、グローバル変数errorの設定を設定します.

  • 2番目のパラメータの値は、次のいずれかです.
  • O_RDONLY(読み取り専用でファイルを開く)、
  • O_WRONLY(書き込みのみでファイルを開く)、
  • O_RDWR(読み書きでファイルを開く)、
  • また、このパラメータの値はO_であってもよいAPPEND(ファイルの最後にデータを追加)とO_CREAT(新しいファイルを作成します).この2つの値は、上記の3つの値と操作できます.これにより、ファイルを操作するときに2つの値の意味が含まれます.たとえば
    open("test",O_WRONLY | O_CREATS_IRWXU )

    testというファイルが作成され、そのファイルを書き込みできます.
    ここにはopen関数が2つありますが、どれを使いますか?急いではいけません.通常、最初のopen関数を使用してファイルを開きます.ファイルを作成する場合は、2番目のopen関数を使用する必要があります.この場合も3番目のパラメータが用いられ、このパラメータの値はS_であってもよいIRUSRタイプの値で、これらのデータは実行または操作できます.たとえば
    S_IRWXU | S_IRWXG | S_IXOTH
    オペレーティングファイルのシステムコール
    ssize_t read(int fd, void *buf, size_t count);
  • この関数は、ファイルからデータを読み出すために使用される.
  • この関数の最初のパラメータは、ファイル記述子であり、ファイル記述子に対応するファイル内のデータを読み出す.
  • この関数の2番目のパラメータはバッファであり、読み取ったデータをバッファに格納する.
  • この関数の3番目のパラメータは、読み出すたびのバイト数である.
  • この関数が正常に実行されると、0の場合、ファイルの末尾に達したことを示す読み取りバイト数が返されます.実行に失敗すると-1に戻ります.グローバル変数error
  • を設定する
    ssize_t write(int fd, const void *buf, size_t count);
  • この関数は、ファイルにデータを書き込むために使用される.
  • この関数の最初のパラメータは、ファイル記述子であり、ファイル記述子に対応するファイルにデータを書き込む.
  • この関数の2番目のパラメータはバッファであり、バッファ内のデータをファイルに書き込む.
  • この関数の3番目のパラメータは、書き込みごとのバイト数である.
  • この関数が正常に実行されると、0の場合、データが書き込まれていないことを示すファイルに書き込まれたバイト数が返されます.実行に失敗すると-1に戻ります.グローバル変数errorを設定します.

  • ファイルのシステム呼び出しを閉じる
    int close(int fd);
  • この関数はファイルを閉じるために使用されます.
  • この関数のパラメータは、ファイル記述子を表し、ファイル記述子に関連付けられたファイルを閉じたり、ファイル記述子を解放したりします.
  • この関数の実行が成功すると0を返し、実行が失敗すると-1を返す.

  • 皆さん、ファイル操作について:ファイル記述子に基づく例はここまでです.後に何か例があるか知りたいので、次の分解を聞いてください.