在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
廣告