2010-02-24 28 views
5

Tôi có một chương trình Perl cần chạy khoảng nửa tá chương trình cùng một lúc trong nền và đợi cho tất cả các chương trình kết thúc trước khi tiếp tục. Nó cũng rất quan trọng là tình trạng thoát của mỗi có thể được nắm bắt.Làm cách nào để quản lý nhiều quy trình con trong Perl?

Có một thành ngữ phổ biến để thực hiện việc này trong Perl không? Tôi hiện đang nghĩ đến việc sử dụng chuỗi.

Trả lời

8

Không sử dụng chủ đề.. Chủ đề hút. Cách thích hợp là để fork nhiều quy trình và wait để chúng hoàn tất. Nếu bạn sử dụng wait hoặc waitpid, trạng thái thoát của quy trình được đề cập sẽ có sẵn trong $?.

Xem perldocs cho fork, waitwaitpid và cũng là ví dụ trong chuỗi this SO.

Nếu tất cả những gì bạn cần chỉ là quản lý một nhóm các quy trình con không vượt quá một kích thước nhất định, hãy kiểm tra số Parallel::ForkManager xuất sắc.

+0

Bỏ qua nhận xét 'chủ đề hút'. Ít nhất là trong Perl. Đừng bận tâm. – fennec

2

Thông thường bạn sẽ ngã ba + exec (trên các hệ thống unix dựa, đây là truyền thống)

Cuộc gọi ngã ba sẽ lặp lại trong các quá trình hiện tại, và nếu bạn cần thiết để sau đó bạn có thể gọi exec trong một trong những trẻ em phải làm một cái gì đó khác nhau. Có vẻ như bạn chỉ muốn nĩa và gọi một phương pháp/chức năng khác trong quy trình con của bạn.

Nếu bạn muốn một cái gì đó phức tạp hơn, hãy kiểm tra cpan cho POE - cho phép bạn quản lý tất cả các loại tình huống phức tạp.

Liên kết hữu ích:

Google "perl sách dạy nấu ăn forking máy chủ" quá - chỉ được phép gửi một liên kết, trừ khi tôi đăng nhập

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