ฉันพยายามเรียนรู้การเขียนโปรแกรม UNIX และพบคำถามเกี่ยวกับ fork () ฉันเข้าใจว่า fork () สร้างกระบวนการที่เหมือนกันของกระบวนการที่กำลังทำงานอยู่ แต่มันเริ่มต้นที่ไหน ตัวอย่างเช่นถ้าฉันมีรหัส
int main (int argc, char **argv)
{
int retval;
printf ("This is most definitely the parent process\n");
fflush (stdout);
retval = fork ();
printf ("Which process printed this?\n");
return (EXIT_SUCCESS);
}
ผลลัพธ์คือ:
นี่เป็นกระบวนการสำหรับผู้ปกครองแน่นอนที่สุดกระบวนการ
ใดที่พิมพ์ออกมานี้
กระบวนการใดพิมพ์
ฉันคิดว่ามันfork()
สร้างกระบวนการเดียวกันดังนั้นตอนแรกฉันก็เลยว่าในโปรแกรมนั้นการfork()
โทรจะถูกเรียกซ้ำตลอดไป ฉันเดาว่ากระบวนการใหม่ที่สร้างขึ้นจากการfork()
เริ่มต้นหลังจากการfork()
โทร?
ถ้าฉันเพิ่มรหัสต่อไปนี้เพื่อแยกความแตกต่างระหว่างกระบวนการหลักและลูก
if (child_pid = fork ()) printf ("This is the parent, child pid is %d\n", child_pid);
else printf ("This is the child, pid is %d\n",getpid ());
หลังจากการเรียก fork () กระบวนการลูกจะเริ่มการประมวลผลที่ไหน
man fork
ก็พอที่จะตอบคำถามของคุณ btw