Linuxのファイル操作

Sep 13, 2018 pm 06:24 PM
linux

この記事の例では、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 までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    CentosとUbuntuの違い CentosとUbuntuの違い Apr 14, 2025 pm 09:09 PM

    Centosとubuntuの重要な違いは次のとおりです。起源(CentosはRed Hat、for Enterprises、UbuntuはDebianに由来します。個人用のDebianに由来します)、パッケージ管理(CentosはYumを使用し、安定性に焦点を当てます。チュートリアルとドキュメント)、使用(Centosはサーバーに偏っています。Ubuntuはサーバーやデスクトップに適しています)、その他の違いにはインストールのシンプルさが含まれます(Centos is Thin)

    Centosをインストールする方法 Centosをインストールする方法 Apr 14, 2025 pm 09:03 PM

    Centosのインストール手順:ISO画像をダウンロードし、起動可能なメディアを燃やします。起動してインストールソースを選択します。言語とキーボードのレイアウトを選択します。ネットワークを構成します。ハードディスクをパーティション化します。システムクロックを設定します。ルートユーザーを作成します。ソフトウェアパッケージを選択します。インストールを開始します。インストールが完了した後、ハードディスクから再起動して起動します。

    メンテナンスを停止した後のCentosの選択 メンテナンスを停止した後のCentosの選択 Apr 14, 2025 pm 08:51 PM

    Centosは廃止されました、代替品には次のものが含まれます。1。RockyLinux(最高の互換性)。 2。アルマリン(Centosと互換性); 3。Ubuntuサーバー(設定が必要); 4。RedHat Enterprise Linux(コマーシャルバージョン、有料ライセンス); 5。OracleLinux(CentosとRhelと互換性があります)。移行する場合、考慮事項は次のとおりです。互換性、可用性、サポート、コスト、およびコミュニティサポート。

    Dockerデスクトップの使用方法 Dockerデスクトップの使用方法 Apr 15, 2025 am 11:45 AM

    Dockerデスクトップの使用方法は? Dockerデスクトップは、ローカルマシンでDockerコンテナを実行するためのツールです。使用する手順には次のものがあります。1。Dockerデスクトップをインストールします。 2。Dockerデスクトップを開始します。 3。Docker Imageを作成します(DockerFileを使用); 4. Docker画像をビルド(Docker Buildを使用); 5。Dockerコンテナを実行します(Docker Runを使用)。

    Dockerの原則の詳細な説明 Dockerの原則の詳細な説明 Apr 14, 2025 pm 11:57 PM

    DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

    Centosがメンテナンスを停止した後の対処方法 Centosがメンテナンスを停止した後の対処方法 Apr 14, 2025 pm 08:48 PM

    CentOSが停止した後、ユーザーは次の手段を採用して対処できます。Almalinux、Rocky Linux、Centosストリームなどの互換性のある分布を選択します。商業分布に移行する:Red Hat Enterprise Linux、Oracle Linuxなど。 Centos 9ストリームへのアップグレード:ローリングディストリビューション、最新のテクノロジーを提供します。 Ubuntu、Debianなど、他のLinuxディストリビューションを選択します。コンテナ、仮想マシン、クラウドプラットフォームなどの他のオプションを評価します。

    VSCODEに必要なコンピューター構成 VSCODEに必要なコンピューター構成 Apr 15, 2025 pm 09:48 PM

    VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

    Dockerはどのような根本的なテクノロジーを使用していますか? Dockerはどのような根本的なテクノロジーを使用していますか? Apr 15, 2025 am 07:09 AM

    Dockerは、コンテナエンジン、ミラー形式、ストレージドライバー、ネットワークモデル、コンテナオーケストールツール、オペレーティングシステム仮想化、コンテナレジストリを使用して、コンテナ化機能をサポートし、軽量でポータブルで自動化されたアプリケーションの展開と管理を提供します。

    See all articles