在 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