On 14 марта 2009 21:31:59 Maciej Kazulak wrote: > ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon > echo ...}) = 0 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost > isig icanon echo ...}) = 0 ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, > {B38400 opost isig icanon echo ...}) = 0 readlink("/proc/self/fd/0", > "/dev/ttyS1"..., 4095) = 10 > open("/dev/ttyS1", O_RDWR|O_NOCTTY > > And it stops there. Which implies, that - terminal is in -clocal mode - carrier detect signal is not present There are two issues here - OS seems to lie. In -clocal mode lack of carrier detect should result in HUP signal and no communication should be possible. - should zsh really reopen terminal? If we need additional fd, it could just dup() it? Interesting, Mandriva RPM has patch that opens tty with O_NONBLOCK; presumably exactly to work around this issue. I am still not convinced that it is the right way; I would really like to understand what happens with tty driver. Could you dump full contents of struct termios *? I believe in Linux it should be something like strace -e verbose=ioctl ...