이러한 표준 입출력 같은 파일 디스크립터의 비트 크기 란, 그것은 32 비트 정수?
당신은 실제 파일 기술자에 의해 반환 된 (및 사용) 리눅스 시스템 콜에 대해 이야기하는 경우, 다음의 맨 페이지를 살펴 걸릴 open
등 @JonathanLeffler에서 알 수 있듯이을.
예를 들어 :
int open(const char *pathname, int flags);
의 반환 값은
open()
파일 기술자, 이후 시스템 호출에 사용되는 작은 음수가 아닌 정수입니다. [...] 성공적인 호출에 의해 반환되는 파일 기술자는 현재 프로세스에 대한 열 가장 낮은 번호의 파일 기술자가 될 것입니다.
주어진 유닉스 계열 시스템 LP64이다, int
따라서 파일 기술자는 32 비트 폭이다.
그러나 참고 커널은 가능한 한 작은 정수로 당신을 줄 것이다 그리고 당신은 일반적으로 (참조 그 전에 제한 방법에 달할 것으로 파일 기술자의 수에 제한을 인해 커널 글로벌 제한 또는 소프트 / 하드 한계) 중 하나.
이 경우,이 수단 정말 그것을 필요로, 당신은 이론적으로 작은 정수를 사용할 수는 예를 들어, 파일 설명, 저장하기 int16_t
또는 int8_t
(프로세스는 한 번에 많은 파일 기술자를 사용하지 않는 가정을).
대신, 당신이 언급하는 경우 stdin
등, 그 파일 기술자는 아니지만 파일은 C 표준에 의해 정의 스트림.
그들은 포인터 타입 (와 표현으로 확장 매크로이다 FILE *
x86_64의 64 비트 폭처럼 일반적인 64 비트 플랫폼) 및 포인터.
7.21p3 (입력 / 출력을 참조하십시오 <stdio.h>
) :
stdin stdout stderr
타입 '포인터 표현되는
FILE
'그 점에FILE
표준 오차, 입력 및 출력 스트림을 각각 연관된 개체.