ホームページ  >  記事  >  運用・保守  >  Linux におけるファイル記述子とファイル ポインターの詳細な紹介

Linux におけるファイル記述子とファイル ポインターの詳細な紹介

黄舟
黄舟オリジナル
2017-06-02 09:56:111849ブラウズ

この記事では、主に Linux でのファイル記述子とファイル ポインターに関する関連情報を紹介します 必要な方は、

Linux でのファイル記述子とファイル ポインターを参照してください

ファイル識別子:

まず、始めましょう。ファイル識別子とは何か理解していますか?

ファイル記述子は、コンピューターサイエンスの用語で、ファイルの

参照を表現するために使用される抽象的な概念です。

Linux では、各プロセスはプロセス制御ブロック (PCB) にファイル記述子テーブルを保存します。ファイル記述子は、このテーブルの

インデックス であり、各テーブルには、開かれたファイルへのポインター

があります。 。

各 Linux プロセスには、3 つの標準ストリームに対応する 3 つの標準ファイル記述子が必要です。

name(unistd.h) シンボル(stdio.h) ファイルストリーム0STDIN_stdin1標準出力STDOUT_FILENOstdout2標準エラーSTDERR_FILENOstderr ファイル記述子は形式的には負ではない整数です。実際、これは、プロセスごとにカーネルによって維持される、プロセスによって開かれたファイルのレコード テーブルを指すインデックス値です。プログラムが既存のファイルを開くか、新しいファイルを作成すると、カーネルはファイル記述子をプロセスに返します。プログラミングでは、一部の低レベル プログラミングはファイル記述子を中心に展開することがよくあります。ただし、ファイル記述子の概念は、多くの場合、UNIX や Linux などのオペレーティング システムにのみ適用されます。 )、socket()、pipe()など
integervalue 定数
ファイルいいえ


単一のファイル記述子に関連する操作


read()、write()、s

end

()、f

chmod

()など

複数のファイル記述子に関する操作select()、poll()など ファイル記述子テーブルに関する操作close()、dup()など がファイルを指します。ファイル ポインターを介して、指定されたファイルに対してさまざまな操作を実行できます。 C 言語では、ファイル記述子の代わりにファイル ポインタを I/O ハンドルとして使用します。ファイルポインタは、プロセスのユーザー領域にある FILE 構造と呼ばれるデータ構造を指します。 FILE 構造にはバッファとファイル記述子が含まれています。 ファイルポインタはC言語の共通形式なので、移植は比較的簡単です通常、ファイルポインタを取得します: ポインタを取得した後、ポインタ内のファイル記述子の情報を取得できます。 。 ファイル記述子は一意ですが、ファイルポインタは一意ではありません。ファイルポインタが指すは一意ではありません。 ファイル記述子とファイルポインタの変換:
ファイルポインタ: ファイルポインタはC言語で習うもので、C言語ではポインタ変数
FILE *fp = fopen("test.txt","r");
オブジェクト
int fileno(FILE *stream);

FILE *fdopen(int fd,const char *mode);

fdopen の最初のパラメータはオープンファイル記述子であり、mode は fopen と同じ、"w" や "r" などのオープン方法を表す 文字列です。 .
fileno

function

、ファイルストリームに対応するファイル記述子を返し、失敗した場合は -1 を返します。

以上がLinux におけるファイル記述子とファイル ポインターの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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