표준 I/O 파일 설명자

표준 I/O 파일 설명자

나는 이것을 코딩한다

$ ls -l 1> stdout.txt

원하는 대로 출력을 얻었습니다.

1> stdout.txt

표준 출력의 출력을 stdout.txt 파일로 리디렉션합니다.

디스크에 그러한 파일이 존재하지 않습니다. 이러한 파일을 지원하는 파일 시스템은 무엇입니까?램프?

이게 와 비슷한 점이 있나요?procfs그리고sysfs?

답변1

Linux를 사용 중이고 귀하의 질문을 올바르게 읽었다면 예를 살펴보십시오./proc.

특정 프로세스를 보려면 /proc/[pid]/fd다음을 참조하세요.ls -l /proc/123/fd/

현재 프로세스 fd에 접근하는 특별한 방법도 있습니다: /proc/self/fd.

예를 들어 현재 쉘이 아닌 프로세스를 위한 ls -l /proc/self/fd것입니다 . 다음을 통해 확인할 수 있습니다.ls

cat /proc/self/cmdline | tr '\000' '\n'

또는

cat /proc/self/status

마지막으로 PPid쉘의 PID가 무엇인지 살펴보세요.

Name:   cat
State:  R (running)
Tgid:   12696
Pid:    12696
PPid:   312

실험적으로 두 개의 터미널 창을 열어볼 수 있습니다.

  1. 창 1에서 echo $$해당 쉘의 PID를 얻으려면 다음을 입력하십시오.
  2. 창 2에서 다음과 같이 말합니다.cat /proc/[pid]/fd/1
  3. 창 1에서 입력을 시작하고 창 2에서 무슨 일이 일어나는지 관찰하세요.

관련 정보