none
通过管道重定向子进程的标准输出后,请问怎么解决因为标准输出全缓存而导致父进程无法读取子进程输出的问题? RRS feed

  • 常规讨论

  •     在通过匿名管道重定向子进程的标准输出后,子进程的标准输出因为被重定向到管道而变为全缓存模式,所以子进程printf的信息父进程无法通过管道读取,因为子进程printf的信息在输出流缓存中而没有输出到管道,直到子进程调用fflush刷新标准输出流,或是子进程退出,子进程printf的信息才会输出到管道。
        这样如果子进程是一个交互式的命令行工具,比如windows自带的ftp.exe,你就无法通过管道实现与其交互,因为子进程即没有调用fflush,也没有退出,父进程无法读到ftp.exe输出的信息。
        请问各位,怎么才能解决这个问题,真正的实现通过程序与命令行工具交互?谢谢。
    2010年7月29日 14:52