在Linux上,shell脚本是否可以检查其标准输入是否从空设备(1,3)*重定向,理想情况下不读取任何内容?
预期的行为将是:
./checkstdinnull
-> no
./checkstdinnull < /dev/null
-> yes
echo -n | ./checkstdinnull
-> no
EDIT
mknod secretunknownname c 1 3
exec 6<secretunknownname
rm secretunknownname
./checkstdinnull <&6
-> yes
我怀疑我“只是”需要读取输入设备的maj / min号。但是我找不到从外壳执行此操作的方法。
*没有必要
/dev/null
,但是任何空设备,即使使用手动创建也是如此mknod
。
{ readlink -f /dev/stdin; } <&6
对于使用exec并删除了该节点的情况,输出为/root/secretunknownname (deleted)
。正如它表明该文件已被删除:满足您的需求还不够吗?
stat
解决方案是唯一可行的解决方案。
/dev/null
,但不是必需的。您可以mknod
在我的示例中使用来“别名” 。
/dev/null
是tty还是不是tty?