/dev/stdout이 Linux에서 어떻게 다른 프로세스를 별도로 가리키고 있습니까?

/dev/stdout이 Linux에서 어떻게 다른 프로세스를 별도로 가리키고 있습니까?

각 프로세스 fd 0,1,2가 /dev/stdin, /dev/stdout, /dev/stderr을 가리키는 것을 이해할 수 있습니다. /dev/stdin에 일부 데이터를 쓰면 해당 프로세스의 fd 1에서만 데이터를 받을 수 있었습니다.

모든 프로세스 stdout(fd 1)이 /dev/stdout을 가리키는 경우 /dev/stdin에 일부 데이터를 쓰면 모든 프로세스에 브로드캐스트되어야 합니까? 누락된 것이 있습니까?

답변1

Linux에서는 /dev/std{in,out,err}장치에 연결하지 말고 각 프로세스의 해당 파일 설명자에 대한 액세스 권한을 부여합니다. 다음 의 출력을 참조하세요 ls -l /dev/std*.

lrwxrwxrwx. 1 root root 15 Feb 24 09:34 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Feb 24 09:34 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Feb 24 09:34 /dev/stdout -> /proc/self/fd/1

그래서 이것은 모두 에 의해 처리됩니다 /proc/self. 보다`/proc/self/`는 어떤 프로세스에 사용되나요?

관련 정보