Gibt es unter Linux eine Möglichkeit für ein Shell-Skript zu überprüfen, ob seine Standardeingabe vom Nullgerät (1, 3) * umgeleitet wird , idealerweise ohne etwas zu lesen?
Das erwartete Verhalten wäre:
./checkstdinnull
-> no
./checkstdinnull < /dev/null
-> yes
echo -n | ./checkstdinnull
-> no
EDIT
mknod secretunknownname c 1 3
exec 6<secretunknownname
rm secretunknownname
./checkstdinnull <&6
-> yes
Ich vermute , dass ich „nur“ Notwendigkeit , die maj / min Anzahl der Eingabe lesen Geräts . Aber ich kann keinen Weg finden, dies aus der Shell heraus zu tun.
* Nicht nur notwendig
/dev/null, sondern jedes Nullgerät, auch wenn es manuell mit erstellt wurde mknod.
{ readlink -f /dev/stdin; } <&6für den Fall, in dem Sie exec verwendet und den Knoten entfernt haben, ist /root/secretunknownname (deleted). Wie es zeigt, wurde die Datei gelöscht: Reicht das nicht für das, was Sie brauchen?
statfunktioniert nur die Lösung.
/dev/null, aber nicht notwendig. Sie können "Alias" mit mknods in meinem Beispiel dargestellt.
/dev/nulloder nur, dass es kein tty ist?