질문에 대한 나의 대답, 그리고 그에 대한 댓글이 나를 읽게 만들었습니다.기본 정의의 POSIX 적합성 부분POSIX 준수가 실제로 필요한지 알아 보십시오 /dev/stdin
./dev/stdout
/dev/stderr
그들은 그렇지 않은 것으로 밝혀졌습니다:
시스템은 비표준 확장을 제공할 수 있습니다. 이는 POSIX.1-2008에서 요구되지 않는 기능이며 다음을 포함할 수 있지만 이에 국한되지는 않습니다. [...] 특수 속성(예: 및 )이 있는 추가
/dev/stdin
문자/dev/stdout
특수/dev/stderr
파일
내가 아는 한 이것은오직이 문서는 표준에 언급되어 있습니다.
나는 이를 구현하지 않는 하나의 "시스템"(실제로 환경)에만 액세스할 수 있으며 그것은 Windows의 MinGW입니다( /dev
내가 아는 한 전혀 없습니다). 내가 아는 한 모든 무료 Unices에는 Windows용 새로운 Linux 환경인 Cygwin과 Darwin/macOS가 포함되어 있습니다.
나는 상업용 Unices에 대해 잘 알지 못합니다.
/dev/stdin
, /dev/stdout
및 /dev/stderr
파일 시스템의 파일을 구현 하지 않는 POSIX 시스템, Unix 또는 오늘날에도 여전히 존재하는 일부 Unix 유사 환경이 있습니까 ?
답변1
/dev/stdin, /dev/stdout 및 /dev/stderr을 파일 시스템의 파일로 구현하지 않는 POSIX 시스템, Unix 또는 Unix 유사 환경이 오늘날에도 여전히 존재합니까?
예, 적어도 아래 예시 시스템에 따르면 그렇습니다.
나는 이 시스템의 전문가는 아니지만 AIX 6.1에서는 Wikipedia가 다음과 같이 주장합니다.
The Open Group의 UNIX 03 표준(https://en.wikipedia.org/wiki/IBM_AIX)
이러한 파일 설명자는 내가 액세스할 수 있는 설치에서 구현되지 않은 것 같습니다. 보시다시피, bash를 사용하면 리디렉션 목적으로 실제로 존재하는 것처럼 동작합니다.
$ uname -s
AIX
$ echo $SHELL
/usr/bin/ksh
$ ls -al /dev/stdin
ls: 0653-341 The file /dev/stdin does not exist.
$ ls -al /dev/stdout
ls: 0653-341 The file /dev/stdout does not exist.
$ ls -al /dev/stderr
ls: 0653-341 The file /dev/stderr does not exist.
$ echo foo >/dev/stderr
The file access permissions do not allow the specified action.
ksh: /dev/stderr: 0403-005 Cannot create the specified file.
$ bash
bash-4.2$ ls /dev/stderr
ls: 0653-341 The file /dev/stderr does not exist.
bash-4.2$ echo foo >/dev/stderr
foo
다른 논평자들이 언급했듯이 다음 질문도 몇 가지 흥미로운 정보를 제공합니다.
답변2
원래 게시물 이후에 이 글을 게시하지만, 미래의 시청자들을 위해 이 댓글을 추가해야겠다고 생각했습니다.
AIX 6.1 시스템에서 /dev/stdout에 쓰면 위와 동일한 결과가 나오지만 AIX 7.1 시스템에서는 예상대로 작동하므로 /dev/stdout에 대한 지원이 추가된 것처럼 보입니다.
AIX 6.1(ksh93)
echo "Hello" > /dev/stdout
ksh93: /dev/stdout: cannot create.
[The file access permissions do not allow the specified action.].
AIX 7.1(ksh93)
echo "Hello" > /dev/stdout
Hello