【发布时间】:2015-03-05 11:05:29
【问题描述】:
我在从专有二进制文件重定向 stdout 和 stderr 时遇到问题。
在使用 strace 工具进行一些“逆向工程”之后,我发现 stdout 描述符上有奇怪的 ioctl-call。
谁能解释一下这个电话是什么意思?
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
【问题讨论】:
-
在管道传输时是否也会进行此调用?它可能正在测试 STDIN 和 STDOUT 是否在 tty 上。
-
它被调用,但如果进程是管道 ioctl 返回“= -1 ENOTTY(设备不适当的 ioctl)”(而不是“= 0”),然后写入标准输出不会发生......好吧,谢谢,现在我明白发生了什么。我可以欺骗过程或任何其他技巧将输出重定向到文件吗?