2011-06-25 46 views
6

Cha mẹ mới luôn "init" hoặc có cách nào để kiểm soát ai sẽ là cha mẹ mới không?quy trình tái bố mẹ: kiểm soát ai là cha mẹ mới

Wikipedia dường như chỉ ra rằng nó luôn là "init". Tôi thực sự hy vọng rằng đây không phải là trường hợp. Tôi đã thử tất cả mọi thứ tôi có thể nghĩ đến với setpgid và setsid, nhưng không may mắn. Và bây giờ tôi thấy bài viết wikipedia này tôi cần lời khuyên.

Trong một hệ điều hành Unix-như bất kỳ quá trình mồ côi sẽ ngay lập tức thông qua bởi các hệ thống init đặc biệt quá trình. Hoạt động này được gọi là tái bố mẹ và tự động diễn ra. Mặc dù về mặt kỹ thuật, quy trình có quy trình "init" làm cha mẹ, nó vẫn được gọi là quy trình mồ côi vì quá trình ban đầu là đã tạo ra nó không còn tồn tại nữa. Taken from wikipedia

Lý do tôi hỏi là vì tôi đang tạo ứng dụng Mac chạy một số quy trình công nhân. Tôi muốn các quy trình công nhân này xuất hiện dưới dạng con của quá trình chính trong quy trình phân cấp của task manager. Một số công nhân chạy với tư cách người dùng khác nhau và trên Mac OS X tôi cần phải chia hai lần để chuyển đặc quyền cho quy trình con. Bởi vì tôi "gấp đôi ngã ba" các công nhân hiện đang chạy như deamons, và khi tìm kiếm với công việc quản lý tôi thấy các công nhân đang có "init" như quá trình cha mẹ của họ.

Trả lời

11

Trẻ em mồ côi luôn được chấp nhận bởi init. Không có Unix cách thay đổi cấp độ gốc thành một số quy trình không phải là init.


Vì Linux 3.4 điều này không còn đúng nữa. Vẫn không có cách Unix di động để làm điều này nhưng như Andy Lutomirski chỉ ra Linux 3.4 bổ sung PR_SET_CHILD_SUBREAPER cho prctl.

Có hiệu lực, subreaper đáp ứng vai trò của init(1) cho các quy trình hậu duệ của nó là .

9

Trên Linux, bạn có thể sử dụng PR_SET_CHILD_SUBREAPER để cho biết rằng con cháu mồ côi của bạn nên được lặp lại với bạn thay vì bắt đầu.

Các vấn đề liên quan