งานของเราคือสร้างโปรเซสลูกและแสดง 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