2008-12-28 11 views
27

Tôi đang tạo quy trình con với fork() bằng C/C++.
Khi quá trình cha mẹ kết thúc (hoặc bị giết vì một lý do nào đó), tôi muốn tất cả các tiến trình con cũng bị giết.
Hệ thống có thực hiện tự động không? Hay tôi phải tự làm?Các tiến trình con được tạo bằng fork() có tự động bị giết khi cha mẹ bị giết không?

Cảm ơn.


câu hỏi tương tự Pre-hiện:

+0

Tôi nhớ nhìn thấy câu hỏi tương tự. Ví dụ. http://stackoverflow.com/questions/269494/how-can-i-cause-a-child-process-to-exit-when-the-parent-does – PolyThinker

Trả lời

32

số Nếu phụ huynh bị giết, con cái trở nên con cái của quá trình init (có quá trình id 1 và được khởi chạy là quá trình người dùng đầu tiên của hạt nhân).

Quá trình init kiểm tra định kỳ cho trẻ mới và giết chúng nếu chúng đã thoát (do đó giải phóng tài nguyên được phân bổ theo giá trị trả lại của chúng).

Câu hỏi đặt ra đã được thảo luận với chất lượng câu trả lời ở đây: How to make child process die after parent exits?

+0

Vậy điều đó có nghĩa là các quá trình con không bị giết bất thường trước khi chấm dứt sớm, nhưng chờ đợi cho họ được thực thi đầy đủ mã của họ và sau đó chấm dứt? –