ホームページ  >  記事  >  運用・保守  >  Linuxのファイル操作

Linuxのファイル操作

坏嘻嘻
坏嘻嘻オリジナル
2018-09-13 18:24:561887ブラウズ

この記事の例では、Python ファイルの読み書き操作と Linux シェル変数コマンドを対話的に実行する方法を説明します。皆さんの参考に共有してください。詳細は次のとおりです。

ファイル操作に関連するシステム コール

Create

int creat(const char *filename, mode_t mode);
Parameter mode は new ファイルのアクセス権限を指定します。umask と合わせてファイルの最終的な権限 (mode&umask) を決定します。umask は、ファイルの作成時に削除する必要があるアクセス権限を表します。これは、読み取り、書き込み、および実行にのみ影響します。呼び出し関数は int umask (int newmask) です。

Open

int open(const char *pathname, int flags);
pathname は、開きたいファイル名です (パス名、デフォルトは現在のパスです)

flags フラグを開きます

  • O_RDONLY ファイルを読み取り専用モードで開きます


  • #O_WRONLY 書き込み専用ファイルを開きます


  • O_RDWR ファイルを開きます読み取りおよび書き込み用のファイル


  • #O_APPEND としてファイルを開く append

  • ## としてファイルを開く

  • #O_CREAT ファイルの作成


  • ##O_EXEC O_CREAT が使用され、ファイルが既に存在する場合、エラーが発生します

  • ##O_NOBLOCK ノンブロッキングな方法でファイルを開きます

  • O_TRUNC ファイルが既に存在する場合は、ファイルの内容を削除します
  • int open(const char *pathname, int flag, mode_t mode)
flag が O_CREATE の場合、ファイルのアクセス許可を示すモード フラグを指定します

S_IRUSR ユーザー読み取り可能

  • ##S_IWUSR ユーザーは書き込み可能


  • S_IXUSR ユーザーは実行可能


  • #S_IRWXU ユーザーは読み取り、書き込み、実行が可能

  • ##S_IRGRP グループは

  • ## を読み取ることができます
  • #S_IWGRP グループは書き込み可能


  • S_IXGRP グループは実行可能


  • # S_IRWXG グループは読み取り、書き込み、実行が可能です

  • S_IROTH 他の人は

  • ## を読み取ることができます S_IWOTH 他の人は

  • # を書くことができます

  • #S_IXOTH 他の人は実行可能


  • S_IRWXO 他の人は読み取り可能、書き込み、実行


  • S_ISUID ユーザーの実行IDを設定します


  • ##S_ISGID グループの実行 ID を設定します

  • #モード フラグでは、ファイルのアクセス許可を表す数値を使用することもできます。


    各数値は、1 (実行権限)、2 (書き込み権限)、4 (読み取り権限)、0 (なし)、またはこれらの値の合計の値を取ることができます。

  • #1 桁目はユーザー ID の設定を示します

    2 桁目はユーザー ID の設定を示しますグループ ID の設定を示します

  • 3 番目の数字はユーザー自身の権限ビットを表します

  • 4 番目の数字はグループの権限を示します

  • # 5 桁目は他のユーザーの権限を表します
  • open("test", O_CREAT, 10705);
  • 上記のステートメントは次と同等です:
  • open("test ", O_CREAT , S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );


  • 読み取りと書き込み
  • int read(int fd, const void *buf, size_t length);

    int write (int fd, const void *buf, size_t length);
パラメータ fd ファイル記述子、buf はバッファへのポインタ、length はバッファのサイズ (バイト単位)、戻り値は、実際に読み書きされたバイト数です。



read() は、ファイル記述子 fd で指定されたファイルから buf で指定されたバッファーに length バイトを読み取ります。戻り値は、実際に読み取られたバイト数です。


write() 実装は、buf が指すバッファからファイル記述子に length バイトを書き込みます。 fd が指すファイルでは、戻り値が返されます。 value は実際に書き込まれたバイト数です。

  • 位置決め
  • ランダムなファイルの場合、読み書きする場所をランダムに指定できます:

    int lseek(int fd, offset_t offset, int whence);

    lseek() は、ファイル読み取り/書き込みポインタを wherece に相対的にオフセット (負の値も可) バイト移動します。操作が成功すると、ファイル ヘッダーを基準としたファイル ポインターの位置が返されます。
  • 次の値を使用できるパラメータ:

    SEEK_SET: ファイルの先頭を基準とした相対値。

    SEEK_CUR: 相対ファイル読み取りおよび書き込みポインターの現在位置。
  • SEEK_END: ファイルの最後からの相対位置。

Close

int close(int fd);


特定のオペレーティング システム プラットフォームに依存しない C ライブラリ関数のファイル操作

Create and open

FILE *fopen(const char *path, const char *mode);
fopen() は、指定されたファイル filename を開くことを実現します。mode はオープン モードです。 Linux システムはバイナリ ファイルとテキスト ファイルを区別しません。

mode

r、rb の値は読み取り専用モードで開かれます


w, wb 書き込み専用モードで開きます。ファイルが存在しない場合はファイルが作成され、存在しない場合はファイルが切り捨てられます。
  • a、ab は追加モードで開かれます。ファイルが存在しない場合は、ファイルを作成します


  • ##r、r b、rb 読み取り/書き込みモードで開く


  • w、w b、wh は読み取りおよび書き込みモードで開かれます。ファイルが存在しない場合は、新しいファイルが作成されます。存在しない場合、ファイルは切り詰められます。


  • #a、a b、ab読み取りと追加の方法を開くための。ファイルが存在しない場合は、新しいファイルを作成します

  • 読み取りと書き込み

    int fgetc(FILE *stream);

    int fputc(int c, FILE *stream);
    char *fgets(char *s, int n, FILE *stream);
    int fputs(const char *s, FILE *stream);
    int fprintf (FILE *stream, const char *format, ...);
    int fscanf (FILE *stream, const char *format, ...);
    size_t fread(void *ptr, size_t size, size_t n , FILE * stream);
    size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
    int fsetpos(FILE *stream, fpos_t *pos);
    nt fsetpos(FILE *stream, const fpos_t *pos);
    int fseek(FILE *stream, long offset, int whence);

    • fread() は、ストリームからの n 個のフィールドの読み取りを実装します。 field は size バイトで、読み取られたフィールドは ptr が指す文字配列に入れられ、実際に読み取られたフィールド数が返されます。


    • write() は、バッファ ptr が指す配列から n 個のフィールドを毎回ストリームに書き込むことを実装します。各フィールドは size バイトであり、実際に書き込まれたフィールドの数が返されます。

    #Close

    int fclose (FILE *stream);

    Linux ファイル システムのディレクトリ構造

    Linuxのファイル操作

      /bin----最もよく使用される基本的なコマンド (ls など) が格納されます。 、cp、mkdir など、このディレクトリ内のファイルはすべて実行可能です。

    • /boot----Linux の起動時に使用されるいくつかのコア ファイル (接続ファイルやイメージ ファイルなど) vmlinuz、initrd.img

    • /dev----デバイスファイル格納ディレクトリとして、アプリケーションプログラムはこれらのファイルを渡します実際のデバイスの読み取り、書き込み、制御を行います。

    • /etc----ユーザー アカウントやパスワードの設定ファイルなど、システム管理に必要な設定ファイルとサブディレクトリ。

    • /home---一般ユーザーのホーム ディレクトリ。通常、各ユーザーは独自のディレクトリを持ちます。ディレクトリ名はユーザーのアカウントに基づいて付けられます。

    • /lib----システムの最も基本的なダイナミック リンク共有ライブラリであるライブラリ ファイル格納ディレクトリ。内部の Windows DLL ファイルに。

    • /lost found---通常は空ですが、システムが予期せずクラッシュしたり、マシンが予期せずシャットダウンした場合は、何らかのファイルが表示されます。フラグメントが生成され、ここに配置されます。

    • /mnt----ユーザーが光学ファイルのマウントなど、他のファイル システムを一時的にマウントするのに便利です。 /mnt/ 上のドライブに移動し、このディレクトリを入力して CD-ROM ドライブの内容を表示します。

    • media--- -USB ドライブ、CD-ROM ドライブなど、このディレクトリにマウントされているいくつかのデバイスを自動的に認識します。

    • #/opt----追加のインストール ソフトウェアがホスト上に保存されるディレクトリ

    • /proc----オペレーティング システムの実行中に、プロセスとカーネル情報 (CPU、ハードディスク パーティション、メモリ情報、など)がここに保存されます。これはシステムメモリのマッピングであり、このディレクトリに直接アクセスすることでシステム情報を取得できます。

    • /root----特権ユーザーのホームディレクトリ

    • /sbin----特権ユーザー用の実行コマンドが格納されているディレクトリ。一般ユーザーにはこのディレクトリ内のコマンドを実行する権限がありません。

    • #/tmp-----一時ファイルを保存します。


    • /usr-----システム アプリケーションとファイル (コマンドやヘルプ ファイルなど) がプログラムを保存するディレクトリ、Windows のプログラム ファイル ディレクトリに似ています。

    • #/var-----ログ ファイルなど、頻繁に変更されるディレクトリはこのディレクトリに配置されます

    • /sys----
      カーネル デバイス ツリーの直感的な反映。カーネル オブジェクトが作成されると、対応するファイルとディレクトリもカーネル オブジェクト サブシステム内に作成されます。

    • /initrd---起動時に initrd イメージが一時ルート ファイル システムとして使用される場合/linuxrc を実行して実際のルート ファイル システムをマウントした後、元の初期 RAM ファイル システムが /initrd ディレクトリにマップされます。

    • Linux ファイル システムとデバイス ドライバー
    関連推奨事項:

    linux 親ディレクトリのアクセス許可がサブディレクトリ ファイルに影響する 操作

    Linux シェル変数コマンドを使用して Python ファイルの読み取りおよび書き込み操作を対話的に実行する方法

    以上がLinuxのファイル操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。