>  기사  >  운영 및 유지보수  >  Linux의 파일 설명자 및 파일 포인터에 대한 자세한 소개

Linux의 파일 설명자 및 파일 포인터에 대한 자세한 소개

黄舟
黄舟원래의
2017-06-02 09:56:111788검색

이 글은 주로 Linux의 파일 디스크립터와 파일 포인터에 대한 자세한 설명을 소개하고 있습니다. , 도움이 필요한 친구가 참조할 수 있습니다

Linux의 파일 설명자 및 파일 포인터

파일 식별자:

우선 , 파일 식별자가 무엇인지 알아볼까요?

파일 디스크립터는 컴퓨터 과학에서 파일을 표현하는 데 사용되는 용어입니다. 인용의 추상적 개념.

Linux에서 각 프로세스는 프로세스 제어 블록(PCB)에 파일 설명자 테이블을 저장하며 파일 설명자는 이 테이블 색인, 각 테이블에는 열린 파일에 대한 포인터가 있습니다

.

각 Linux 프로세스에는 3개의 표준 스트림에 해당하는 3개의 표준 파일 설명자가 있어야 합니다.

整数 名称 (unistd.h)符号常量 (stdio.h)文件流
0 Standard input STDIN_FILENO stdin
1 Standard output STDOUT_FILENO stdout
2 Standard error STDERR_FILENO stderr

파일 설명자는 음수가 아닌 정수 형식입니다. 실제로는 각 프로세스에 대해 커널이 유지 관리하는 프로세스에서 열린 파일의 레코드 테이블을 가리키는 인덱스 값입니다. 프로그램이 기존 파일을 열거나 새 파일을 만들면 커널은 파일 설명자를 프로세스에 반환합니다. 프로그래밍에서 일부 저수준 프로그래밍은 종종 파일 설명자를 중심으로 진행됩니다. 그러나 파일 설명자의 개념은 UNIX 및 Linux와 같은 운영 체제에만 적용되는 경우가 많습니다.

파일 설명자와 관련된 작업:


파일 포인터:

功能 操作
文件描述符生成 open()、socket()、pipe()等
与单一文件描述符相关的操作 read()、write()、send()、fchmod()等
与复数文件描述符相关的操作 select()、poll()等
与文件描述符表相关度的操作 close()、dup()等
파일 포인터는 우리가 C 언어에서 배우는 것인데, C에서는 언어에서 포인터 변수는 파일을 가리킵니다. 이 포인터를 파일 포인터라고 합니다. 파일 포인터를 통해 우리는 지정된 파일에 대해 다양한 작업을 수행할 수 있습니다. C 언어는 I/O 핸들로 파일 설명자 대신 파일 포인터를 사용합니다. 파일 포인터는 프로세스의 사용자 영역에 있는 FILE 구조라는 데이터 구조를 가리킵니다. FILE 구조에는 버퍼와 파일 설명자가 포함되어 있습니다.

파일 포인터는 C 언어의 일반적인 형식이므로 이식하기가 상대적으로 쉽습니다.

우리는 일반적으로 파일 포인터를 얻습니다:

FILE *fp = fopen("test.txt","r");

포인터를 얻은 후에는 Get을 할 수 있습니다. 포인터의 파일 설명자에 대한 정보입니다.

파일 설명자는 고유하지만 파일 포인터는 개체는 고유합니다.

파일 설명자와 파일 포인터 변환:

int fileno(FILE *stream);

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

fdopen 첫 번째 매개변수는 열린 파일 설명자이고, 모드는 열기 방법입니다. 문자열, fopen과 동일(예: "w" 또는 "r").

fileno함수는 파일 스트림에 해당하는 파일 설명자를 반환하고 실패 시 -1을 반환합니다.

위 내용은 Linux의 파일 설명자 및 파일 포인터에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.