命令输出(stdout,stderr)未重定向到管道

时间:2015-03-05 11:05:30

标签: c linux tty ioctl

我在从专有二进制文件重定向stdoutstderr时遇到了问题。

在使用strace工具进行一些“逆向工程”之后,我在stdout描述符上发现了奇怪的ioctl调用。

任何人都能解释一下这是什么意思吗?

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

1 个答案:

答案 0 :(得分:0)

它没什么奇怪的。它只是获取终端参数 - 即/dev/pts/X设备的参数来自您运行的xterm

tcgetattr()的手册页(与TCGETS相同,请参阅man tty_ioctl):

  

tcgetattr()获取与fd引用的对象关联的参数,并将它们存储在termios_p引用的termios结构中。可以从后台进程调用此函数;但是,终端属性可能随后由前台进程更改。