Sous Linux, existe-t-il un moyen pour un script shell de vérifier si son entrée standard est redirigée depuis le périphérique nul (1, 3) * , idéalement sans rien lire?
Le comportement attendu serait:
./checkstdinnull
-> no
./checkstdinnull < /dev/null
-> yes
echo -n | ./checkstdinnull
-> no
EDIT
mknod secretunknownname c 1 3
exec 6<secretunknownname
rm secretunknownname
./checkstdinnull <&6
-> yes
Je soupçonne que j'ai "juste" besoin de lire le nombre maj / min du périphérique d' entrée . Mais je ne peux pas trouver un moyen de le faire à partir du shell.
* Pas nécessaire seulement
/dev/null
, mais tout appareil nul même s'il a été créé manuellement avec mknod
.
{ readlink -f /dev/stdin; } <&6
pour le cas où vous avez utilisé exec et supprimé le nœud est /root/secretunknownname (deleted)
. Comme cela montre que le fichier a été supprimé: n'est-ce pas suffisant pour ce dont vous avez besoin?
stat
solution est la seule qui fonctionne.
/dev/null
, mais pas nécessaire. Vous pouvez "alias" est avec mknod
s illustré dans mon exemple.
/dev/null
, ou tout simplement que ce n'est pas un tty?