stdio 這個 library 會自己判斷它是否是在 tty 下執行,並藉以決定採用何種 buffering 方式。如果它認為是在 tty 模式下,那麼它就會以一次一行來做 buffering;反之,則用一個較大的 buffer 而非一行一行的做。
如果你能拿到你所想要取消 buffering 的軟體的原始程式,那麼你就可以用 setbuf() 或 setvbuf() 來改變 buffering 的方式。
如果你無法拿到原始程式,那麼你就只能試著去說服這個正在 pty 下執行 的程式,讓它以為它是在 tty 下執行。例如,用先前在問題 3.9 中所提過 的 pty 程式。