📜  在Python中使用管道在父子进程之间进行通信

📅  最后修改于: 2022-05-13 01:55:14.971000             🧑  作者: Mango

在Python中使用管道在父子进程之间进行通信

先决条件 - 在Python中创建子进程
由于计算机上同时运行着许多进程,因此非常有必要在它们之间进行适当的通信,因为一个进程可能依赖于其他进程。进程之间有多种通信方法。这是一个简单的Python程序,用于演示使用管道方法在父进程和子进程之间进行通信。

使用的图书馆 –
Python中的 OS 模块: Python中的 OS 模块提供了一种使用操作系统相关功能的方法。 OS 模块提供的功能允许您与运行Python的底层操作系统进行交互;无论是 Windows、Mac 还是 Linux。它可以导入为 -

import os

使用系统调用 –
pipe() 系统调用:方法 pipe() 创建一个管道并返回一对可分别用于读取和写入的文件描述符 (r, w)。该方法返回一对文件描述符。

语法——以下是 pipe() 方法的语法——

os.pipe()

注意 –管道只是单向通信,即我们可以使用管道,一个进程写入管道,另一个进程从管道读取。

# Python code to demonstrate communication
# between parent and child process using 
# python.
  
import os
  
def communication(child_writes):
    # file descriptors r, w for reading and writing
    r, w = os.pipe()
      
    #Creating child process using fork
    processid = os.fork()
    if processid:
        # This is the parent process
        # Closes file descriptor w
        os.close(w)
        r = os.fdopen(r)
        print ("Parent reading")
        str = r.read()
        print( "Parent reads =", str)
    else:
        # This is the child process
        os.close(r)
        w = os.fdopen(w, 'w')
        print ("Child writing")
        w.write(child_writes)
        print("Child writes = ",child_writes)
        w.close()
          
# Driver code        
child_writes = "Hello geeks"
communication(child_writes)
  
# Contributed by "Sharad_Bhardwaj".

输出 :

Child writing
Child writes =  Hello geeks
Parent reading
Parent reads = Hello geeks