在Python中使用fork()建立子程序


我們的任務是建立一個子程序,並使用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())
# Driver code
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

更新於:2020年6月26日

2K+瀏覽量

啟動您的職業生涯

完成課程後獲得認證

開始
廣告