![표준 I/O 파일 설명자](https://rvso.com/image/31674/%ED%91%9C%EC%A4%80%20I%2FO%20%ED%8C%8C%EC%9D%BC%20%EC%84%A4%EB%AA%85%EC%9E%90.png)
나는 이것을 코딩한다
$ 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에서
echo $$
해당 쉘의 PID를 얻으려면 다음을 입력하십시오. - 창 2에서 다음과 같이 말합니다.
cat /proc/[pid]/fd/1
- 창 1에서 입력을 시작하고 창 2에서 무슨 일이 일어나는지 관찰하세요.