각 프로세스 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/`는 어떤 프로세스에 속합니까?