이 글은 주로 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 언어의 일반적인 형식이므로 이식하기가 상대적으로 쉽습니다.
우리는 일반적으로 파일 포인터를 얻습니다:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!