![Standard-E/A-Dateideskriptoren](https://rvso.com/image/31674/Standard-E%2FA-Dateideskriptoren.png)
Ich codiere dies
$ ls -l 1> stdout.txt
und ich bekomme die Ausgabe wie gewünscht,
1> stdout.txt
leitet die Ausgabe der Standardausgabe in die Datei stdout.txt um.
Ich sehe keine solche Datei auf der Festplatte. Welche Art von Dateisystem unterstützt solche Dateien, ist esramfs?
Hat das irgendeine Ähnlichkeit mit demprocfsUndsysfs?
Antwort1
Wenn Sie Linux verwenden und ich Ihre Frage richtig verstanden habe, dann schauen Sie bitte in/proc
.
Für einen bestimmten Vorgang schauen Sie /proc/[pid]/fd
beispielsweise inls -l /proc/123/fd/
Es gibt auch eine spezielle Möglichkeit, die aktuellen Prozess-FDs zu erreichen: /proc/self/fd
.
Beachten Sie, dass zB ls -l /proc/self/fd
für den Prozess und nicht für Ihre aktuelle Shell gilt ls
, was Sie wie folgt erkennen können:
cat /proc/self/cmdline | tr '\000' '\n'
oder
cat /proc/self/status
Achten Sie zum Schluss insbesondere darauf, PPid
welche PID Ihre Shell haben sollte.
Name: cat
State: R (running)
Tgid: 12696
Pid: 12696
PPid: 312
Als Experiment könnten Sie versuchen, zwei Terminalfenster zu öffnen:
- Geben Sie in Fenster 1 ein
echo $$
, um die PID dieser Shell zu erhalten. - In Fenster 2 sagen Sie
cat /proc/[pid]/fd/1
- Beginnen Sie in Fenster 1 mit der Eingabe und beobachten Sie, was in Fenster 2 passiert.
- /procbei kernel.org
- procbei TLDP
- Dateisystemebei man7.org