2010-02-24 32 views
5

Ben arka planda aynı anda yaklaşık yarım düzine programları çalıştırmak ve devam etmeden önce bitmesini hepsini beklemek gereken bir Perl programı var. Her birinin çıkış durumunun yakalanması da çok önemlidir.Perl'de birden çok alt işlemi nasıl yönetirim?

Perl bunu yapmaya yönelik ortak bir deyim var mı? Şu anda konu kullanmayı düşünüyorum. Eğer + exec çatal olur Normalde

cevap

8

giriş sürece bir bağlantı sonrası izin verdi.. Konuları emmek. Doğru yol, fork çoklu işlem ve wait bitmesidir. Eğer wait veya waitpid kullanıyorsanız, söz konusu sürecin çıkış durumu $? satışa sunulacak.

fork, wait ve waitpid için perldocs bakınız ve ayrıca this örnekler SO iplik.

İhtiyacınız olan tek şey, belirli bir boyutu aşmayan bir alt işlem havuzunu yönetmekse, mükemmel olan Parallel::ForkManager'a bakın.

+0

'Thread suck' yorumunu çalıştırır. En azından Perl'de. Rahatsız etme. – fennec

2

çatal çağrı mevcut süreci çoğaltmak olacaktır (Unix tabanlı sistemler üzerinde, bu geleneksel) ve daha sonra çocukların birinde exec diyebiliriz sana gerekirse yapmaya farklı birşey. Çocuğunuzun işleyişinde farklı bir yöntemi/işlevi çağırmak ve çatallamak istediğiniz gibi görünüyor.

Daha karmaşık bir şey istiyorsanız, her tür karmaşık senaryoyu yönetmenizi sağlayan POE için cpan'ı kontrol edin.

Faydalı linkler:

Google da "perl yemek kitabı forking sunucusu" - Keşke konuları kullanmayın

İlgili konular