在 Python 中使用 fork() 创建子进程

pythonprogrammingserver side programming

我们的任务是使用 Python 中的 fork() 函数创建一个子进程并显示父进程和子进程的进程 ID。

当我们使用 fork() 时,它会创建自身的副本,这是 LINUX、UNIX 的一个非常重要的方面。fork() 主要适用于多线程环境,这意味着线程的执行被复制,从父线程创建子线程。当出现错误时,该方法将返回一个负值,对于子进程,它返回 0,否则,它返回正值,这意味着我们处于父进程中。

fork() 模块可以从 os 模块或名为 pty 的伪终端模块中使用。所以我们应该为其导入 os 或 pty。

fork() 用于创建一个进程,它没有参数,它返回进程 ID。使用 fork() 的主要原因是创建一个新进程,该进程将成为调用者的子进程。当创建一个新的子进程时,两个进程都会执行下一条指令。

通过 fork() 的返回值我们可以了解我们在哪个进程中,当返回 0 时表示我们在子进程中,如果返回正值,则表示我们在父进程中,返回负值表示发生了一些错误。

示例代码

import os
   def parentchild():
      n = os.fork()
   if n > 0:
      print("Parent process : ", os.getpid())
   else:
      print("Child proces : ", os.getpid())
# 驱动代码
parentchild()

输出

Parent process : 8023
Child process : 8024
$

伪终端实用程序模块 pty 被定义为处理伪终端概念。使用它我们可以启动另一个进程,也可以使用程序从控制终端读取或写入。

此模块高度面向平台。我们应该使用 UNIX 系统来执行这些操作。

示例代码

import pty, os
   def process_parent_child():
      (process_id, fd) = pty.fork()
   print("The Process ID for the Current process is: " + str(os.getpid()))
   print("The Process ID for the Child process is: " + str(process_id))
process_parent_child()

输出

The Process ID for the Current process is: 12508
The Process ID for the Child process is: 12509

相关文章