我需要执行一个外部程序并交替访问它的stdin和stdout,就像控制台终端本身一样.我使用过popen(),但它没有提供双向管道.使用pipe()和fork()也不能以交互方式工作,因为必须关闭写管道才能访问读管道.
请给我一些帮助来提出它.
解决方法:
您需要打开两个管道,一个连接到子进程的stdin,一个连接到stdout.您可能还需要一些方法来在您的过程中复用输入/输出.
另一种选择可能是使用伪终端,这将使您与客户端软件进行双向通信,该客户端软件具有伪终端作为其I / O通道 – 尽管我不太确定您要完成的步骤这个,我只是建议它,因为我知道其他程序,如xterm和ssh使用该方法.
之前已经问过同样的问题,答案几乎就是我在第一段中所描述的:
popen simultaneous read and write
(这个答案包括一些看起来不错的代码!)