AIX(unix)에서 stdin, stdout 및 stderr 파일 설명자의 위치는 어디에 있습니까?

AIX(unix)에서 stdin, stdout 및 stderr 파일 설명자의 위치는 어디에 있습니까?

내 Linux 환경에서 파일 설명자는 /dev/fd에 있습니다.

AIX(unix)에서 stdin, stdout 및 stderr 파일 설명자의 위치는 어디에 있습니까?

찾을 수 없습니다.

답변1

이 질문은 proc 파일 시스템의 일반성에 대한 오해에 근거합니다. Solaris 및 Linux와 같이 이 기능을 구현하는 시스템에는 /dev/fd파일 설명자(번호)와 파일 설명자로 구성된 스크립팅에 사용할 수 있는 특수 장치가 있습니다 .

Solaris(및 MacOS, FreeBSD와 같은 일부 BSD)의 경우 /dev/fd이는 아래의 가상 폴더인 반면 Linux는 프로세스 ID와 일치하는 (가상) 폴더 /dev에 대한 심볼릭 링크를 사용합니다 . /procproc 파일 시스템에 대한 표준은 없습니다.~ 할 것이다다른.

BSD는 동일한 구성표를 사용하지 않습니다. Solaris, MacOS 및 FreeBSD는 이 폴더에 대한 기호 링크를 사용하는 반면 NetBSD stdin및 OpenBSD는 이를 수행하기 위해 장치 노드(동일한 메이저/마이너 번호 포함)를 사용합니다. 그러나 그들은 매우 유사합니다. (BSD와 달리 Solaris 지원) 과는 별개입니다.stdoutstderr/dev/fd/dev/fd/proc

AIX 5.3 및 7.1 시스템을 확인하면 proc 파일 시스템이 구현되지만 /dev/fd.하다/proc현재 프로세스 ID를 찾을 수 있는 가상 파일 시스템이 있습니다 .저것fd파일 설명자가 있는 폴더 입니다 .

관례적으로 파일 설명자는 0, 1, 2로 초기화됩니다.표준 입력,표준 출력,표준 에러각기.

추가 자료:

프로세스의 열려 있는 모든 파일 설명자를 포함하는 파일입니다. 각 항목은 프로세스의 열린 파일 설명자에 해당하는 10진수입니다. 엔터티가 일반 파일을 참조하는 경우 일반 파일 의미를 사용하여 열 수 있습니다. 제어 프로세스가 더 큰 액세스 권한을 얻을 수 없도록 하기 위해 제어 프로세스에는 자체 읽기/쓰기 열기 모드 외에는 파일 액세스 모드가 없습니다. 목차는 링크로 나타납니다. 다른 유형의 항목을 열려고 하면 실패합니다(따라서 권한이 0으로 나열됩니다).

/dev/fd 기능은 Tom Duff가 개발했으며 Research Unix System 버전 8에 등장했습니다. SVR4 및 4.3+BSD가 지원됩니다. POSIX.1의 일부가 아닙니다.

답변2

이는 인공적인 파일 설명자이므로 확실히 처리할 필요가 없습니다. 이는 역사적 부재와 일부 시스템에서는 여전히 부재함을 설명합니다.

쉘은 TTY에 따라 이러한 표준 파일 설명자를 처리합니다. 쉘이 시작되면 를 호출 isatty()하고 (TTY)인 경우 자동으로 표준 파일 설명자를 엽니다.

관련 정보