+ -
当前位置:首页 → 问答吧 → 请问怎么解决因为缓存而导致父进程无法通过管道重定向读取子进程标准输出的问题?

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

时间:2010-07-29

来源:互联网

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

作者: ljwxl   发布时间: 2010-07-29

用伪终端程序,比如expect

作者: lanying_wzw   发布时间: 2010-07-31

相关阅读 更多