งานของเราคือสร้างโปรเซสลูกและแสดง id โปรเซสของทั้งโปรเซสพาเรนต์และโปรเซสลูกโดยใช้ฟังก์ชัน fork() ใน Python
เมื่อเราใช้ fork() มันจะสร้างสำเนาของมันเอง มันเป็นสิ่งสำคัญมากสำหรับ LINUX, UNIX fork() ใช้เป็นหลักสำหรับสภาพแวดล้อมแบบมัลติเธรดซึ่งหมายความว่าการดำเนินการของเธรดนั้นซ้ำกันสร้างเธรดย่อยจากเธรดหลัก เมื่อมีข้อผิดพลาด เมธอดจะส่งกลับค่าลบ และสำหรับโปรเซสลูกจะส่งกลับ 0 มิฉะนั้นจะส่งกลับค่าบวกซึ่งหมายความว่าเราอยู่ในกระบวนการหลัก
สามารถใช้โมดูล fork() จากโมดูล os หรือจากโมดูลเทอร์มินัล Pseudo ที่เรียกว่า 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