Linux 程序显示控制台输出,即使stdout和stderr被重定向

Linux 程序显示控制台输出,即使stdout和stderr被重定向,linux,unix,console,Linux,Unix,Console,即使标准输出和标准错误都被重定向到/dev/null,vncpasswd程序如何在控制台上生成输出 $ vncpasswd > /dev/null 2> /dev/null Password: 编辑:这是一个局部策略: open("/dev/tty", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 3 ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo

即使标准输出和标准错误都被重定向到/dev/null,vncpasswd程序如何在控制台上生成输出

$ vncpasswd > /dev/null 2> /dev/null
Password: 
编辑:这是一个局部策略:

open("/dev/tty", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(3, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 opost -isig icanon -echo ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost -isig icanon -echo ...}) = 0
fstat(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(5, 0), ...}) = 0
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost -isig icanon -echo ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb7c3eda000
write(3, "Password: ", 10Password: )              = 10
read(3, 

您只是将stderr重定向到
/dev/null
试试
vncpasswd&>/dev/null

它直接打开底层终端(类似于
打开(“/dev/tty”,…)
)。再多的重定向也解决不了这个问题。如果您不想看到它,您必须在不连接tty的情况下运行它(例如,通过
cron
或其他方式)。

它打开您的终端并在那里写入:

open("/dev/tty", O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 3
...
write(3, "Password: ", 10Password: )              = 10

如果您想让它不可能,请在
setsid
下运行它。

我希望它们都被重定向到/dev/null。现在我考虑一下,您的原始答案也应该可以。我不知道为什么。。