0

我有一个从用户读取控制台输入的进程(readline、raw_input 等 - 取决于平台)。还有另一个进程想要为第一个进程提供给定的输入。

如何在linux中做到这一点?可能吗?PS我感兴趣的语言是Python,但任何语言/平台的提示都值得赞赏。

4

2 回答 2

2

第一个选项:

Python 提供了subprocess包来执行此任务。您需要使用 subprocess 包提供的管道。参考这里

第二个选项:

您可以使用multiprocessing包进行更好的控制和更多的选择;管道仍然可用。此外,您可以使用 Queue、Array 和 Lock 来促进进程间通信。参考这里

于 2013-08-04T18:32:58.213 回答
1

一般来说,管道在类 Unix 系统上运行良好。在 C 语言中,您将调用 popen ,它返回管道的两端,然后 fork 生成一个写入管道的进程和一个从管道读取的进程。代码是标准样板:

int pdes[2];

pipe(pdes);
if ( fork() == 0 ) { 
    close(pdes[1]); 
    read( pdes[0]); /* read from parent */
    .....
}
else {          
         close(pdes[0]); 
     write( pdes[1]); /* write to child */
         .....
}

在 Python 中,您可以使用子进程并使用管道进行通信,如 python 文档中所述

于 2013-08-04T18:49:53.330 回答