我在从专有二进制文件重定向stdout
和stderr
时遇到了问题。
在使用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
答案 0 :(得分:0)
它没什么奇怪的。它只是获取终端参数 - 即/dev/pts/X
设备的参数来自您运行的xterm
。
从tcgetattr()
的手册页(与TCGETS
相同,请参阅man tty_ioctl
):
tcgetattr()获取与fd引用的对象关联的参数,并将它们存储在termios_p引用的termios结构中。可以从后台进程调用此函数;但是,终端属性可能随后由前台进程更改。