案例研究:在浏览器中打开新闻

假设你想在浏览器中打开rssgossip.py脚本找到的新闻链接,你将在父进程中运行程序,在子进程中运行rssgossip.py。需要创建管道,把rssgossip.py的输出和程序的输入连接起来。

如何创建管道?

案例研究:在浏览器中打开新闻 - 图1

pipe()打开两条数据流

因为子进程需要把数据发送到父进程,所以要用管道连接子进程的标准输出和父进程的标准输入。你将用pipe()函数建立管道。还记得吗?我们说过,每当打开数据流时,它都会加入描述符表。pipe()函数也是如此,它创建两条相连的数据流,并把它们加到表中,然后只要你往其中一条数据流中写数据,就可以从另一条数据流中读取。

案例研究:在浏览器中打开新闻 - 图2

pipe()在描述符中创建这两项时,会把它们的文件描述符保存在一个包含两个元素的数组中:

案例研究:在浏览器中打开新闻 - 图3

pipe()函数创建了管道,并返回了两个描述符:fd[1]用来向管道写数据,fd[0]用来从管道读数据,你将在父、子进程中使用这两个描述符。

案例研究:在浏览器中打开新闻 - 图4