기타 운영 체제

기타 운영 체제

stdinPOSIX는 0, stdout1, 2를 지정합니까 stderr, 아니면 단지 관례입니까? 다른 시스템이 이 규칙에서 벗어나나요, 아니면 이것이 안전한 가정인가요?

답변1

POSIX 사양에 표준화된 것처럼 보이지만,

  • POSIX.1-2017프록시를 통해unistd.h

    헤더는 파일 스트림에 대해 다음 기호 상수를 정의해야 합니다.

    • STDERR_FILENOstderr의 파일 번호 2.
    • STDIN_FILENO표준 입력의 파일 번호는 0입니다.
    • STDOUT_FILENO1. 표준 출력의 파일 번호입니다.
  • 하지만 또한stderr" , stdin, stdout- 표준 I/O 스트림" 에 대한 POSIX 문서상태,

    이 볼륨 POSIX.1-2017은 ISO C 표준을 따릅니다.

  • 이것ISO ISO/IEC 9899:201x 표준그냥 설명하자면,

    미리 정의된 세 가지 스트림 stdin, stdout 및 stderr은 프로그램 시작 시 방향이 지정되지 않습니다.

ISO C는 이에 대해 상대적으로 침묵하는 것으로 보이며 커널이 STDOUT, 및 이라는 STDERR설명자 에 원하는 것을 할당할 수 있도록 허용합니다 STDIN. 그러나 POSIX 문서에는 unistd.h해당 수준에서 해결해야 할 문제가 무엇인지 명확하게 나와 있습니다.

기타 운영 체제

답변2

쉘 명령 언어에 대한 POSIX 사양, 섹션 2.7, 리디렉션,설명하다

리디렉션에 사용되는 일반적인 형식은 다음과 같습니다:
 [N] 리디렉션 작업 단어

숫자N파일 설명자 번호를 지정하는 선택적 10진수입니다.
    0
, 1, 2 값은 특별한 의미와 일반적인 용도를 가지며 호출되는 특정 리디렉션 작업에 의해 암시됩니다.표준 입력,표준 출력, 그리고표준 에러, 각각. …

    ︙

리디렉션된 입력의 일반적인 형식은 다음
 과 같습니다.N ]<단어

그 중 선택 사항N파일 설명자 기호를 나타냅니다. 이 숫자가 생략되면 리디렉션은 표준 입력(파일 설명자 0)을 참조해야 합니다.

... 표준 출력을 언급하는 >동등한 문단도 있습니다 .1>

관련 정보