5
ความแตกต่างระหว่าง fork (), vfork (), exec () และ clone ()
ฉันกำลังมองหาความแตกต่างระหว่างสิ่งทั้งสี่นี้ใน Google และฉันคาดหวังว่าจะมีข้อมูลจำนวนมากเกี่ยวกับเรื่องนี้ แต่จริงๆแล้วไม่มีการเปรียบเทียบที่ชัดเจนระหว่างการโทรสี่สาย ฉันตั้งค่าเกี่ยวกับการพยายามรวบรวมพื้นฐานแบบคร่าว ๆ ดูความแตกต่างระหว่างการเรียกระบบเหล่านี้และนี่คือสิ่งที่ฉันได้รับ ข้อมูลทั้งหมดนี้ถูกต้อง / ฉันไม่มีข้อมูลสำคัญอะไร Fork โดยทั่วไปแล้วการเรียก fork จะทำซ้ำกระบวนการปัจจุบันเหมือนกันเกือบทุกวิธี (ไม่ใช่ทุกสิ่งที่ถูกคัดลอกมาตัวอย่างเช่นข้อ จำกัด ทรัพยากรในการใช้งานบางอย่าง แต่แนวคิดก็คือการสร้างสำเนาให้ใกล้เคียงที่สุด กระบวนการใหม่ (เด็ก) รับรหัสกระบวนการที่แตกต่าง (PID) และมี PID ของกระบวนการเก่า (พาเรนต์) เป็นพาเรนต์ PID (PPID) เนื่องจากทั้งสองกระบวนการกำลังทำงานในรหัสเดียวกันทุกประการพวกเขาสามารถบอกได้ว่าโค้ดใดที่โค้ดส่งคืนของ fork - เด็กได้รับ 0 ผู้ปกครองได้รับ PID ของเด็ก ทั้งหมดนี้เป็นเรื่องสมมติว่า fork call ใช้งานได้หากไม่ใช่จะไม่มีการสร้างลูกและผู้ปกครองจะได้รับรหัสข้อผิดพลาด Vfork: ความแตกต่างพื้นฐานระหว่าง vfork และทางแยกคือเมื่อกระบวนการใหม่ถูกสร้างขึ้นด้วย vfork () กระบวนการหลักถูกระงับชั่วคราวและกระบวนการลูกอาจยืมพื้นที่ที่อยู่ของผู้ปกครอง สถานการณ์แปลก ๆ …