Standard-E/A-Dateideskriptoren

Standard-E/A-Dateideskriptoren

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]/fdbeispielsweise 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/fdfü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, PPidwelche 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:

  1. Geben Sie in Fenster 1 ein echo $$, um die PID dieser Shell zu erhalten.
  2. In Fenster 2 sagen Siecat /proc/[pid]/fd/1
  3. Beginnen Sie in Fenster 1 mit der Eingabe und beobachten Sie, was in Fenster 2 passiert.

verwandte Informationen