У меня возникли проблемы с перенаправлением stdout
и stderr
из фирменного двоичного кода.Командный выход (stdout, stderr) не перенаправлен на трубу
После некоторого «обратного проектирования» с инструментом strace я нашел странный ioctl-вызов в дескрипторе stdout.
Может ли кто-нибудь объяснить мне, что это значит?
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. – Skaperen
Да, это называется – Dcow
Это вызвано, но если процесс передан по каналам, ioctl возвращает «= -1 ENOTTY (несоответствующий ioctl для устройства)» (istead «= 0»), после чего запись в stdout не происходит ... Ну, спасибо , теперь я понимаю, что происходит. Могу ли я обмануть procces или любым другим выходом перенаправления trick в файл? – Dcow