案例研究:在浏览器中打开新闻
假设你想在浏览器中打开rssgossip.py脚本找到的新闻链接,你将在父进程中运行程序,在子进程中运行rssgossip.py。需要创建管道,把rssgossip.py的输出和程序的输入连接起来。
如何创建管道?
pipe()打开两条数据流
因为子进程需要把数据发送到父进程,所以要用管道连接子进程的标准输出和父进程的标准输入。你将用pipe()
函数建立管道。还记得吗?我们说过,每当打开数据流时,它都会加入描述符表。pipe()
函数也是如此,它创建两条相连的数据流,并把它们加到表中,然后只要你往其中一条数据流中写数据,就可以从另一条数据流中读取。
pipe()
在描述符中创建这两项时,会把它们的文件描述符保存在一个包含两个元素的数组中:
pipe()
函数创建了管道,并返回了两个描述符:fd[1]
用来向管道写数据,fd[0]
用来从管道读数据,你将在父、子进程中使用这两个描述符。