फॉरवर्डिंग मैंने हाल ही में पर्ल फोर्किंग की खोज की है और मैं काफी प्यार में हूं। लेकिन एक बात मुझे चिंतित करती है - अगर मैं सिर्फ बाएं और दाएं प्रक्रियाओं को विभाजित कर रहा हूं, तो निश्चित रूप से यह कहीं कुछ समस्या पैदा करेगा। क्या कोई उचित प्रकार की जांच है कि किसी को यह सुनिश्चित करने के लिए उपयोग करना चाहिए कि मेरा छोटा आवेदन मेरी मशीन के सभी संसाधनों को नहीं खाता है?पर्ल - जिम्मेदार
यह कोड का नमूना लें:
foreach my $command (@commands) {
my $pid = fork();
if (!$defined $pid) {
#Fork failed. Do something.
} elsif ($pid == 0) { #This is the child.
system($command);
exit(0)
}
}
while (wait() != -1) {} #wait() will be -1 when the last child exits.
तो यह ठीक से काम करेंगे, और प्रत्येक आदेश को संभालने के लिए एक प्रक्रिया बंद अंडे। यह सब समानांतर में होगा जो महान है यदि ये आदेश पूरी तरह से स्वतंत्र हैं।
क्या होगा अगर मेरे पास अचानक 5,000+ आदेश चलने के लिए? विचारहीन रूप से कई प्रक्रियाओं को दूर करना बुद्धिमान नहीं होगा। तो किस प्रकार की जांच लागू की जानी चाहिए, और कैसे?
)
उम का ख्याल रखना होगा, आप कितने काँटेदार चीज़ों को ट्रैक, और एक अधिकतम पर रोक तो आप मशीन को मार नहीं पाते हैं और जल्द ही बहुत गुस्सा होने के लिए sysadmin 3am पर जागृत हो जाते हैं? ;) –
ठीक है, लेकिन उचित "अधिकतम" क्या है? – Jeremy
जहां आपने किया था वहां 'सिस्टम' को कॉल करना मूर्खतापूर्ण है। 'system' मूल रूप से 'कांटा' +' exec' (बच्चा) + 'waitpid' (पैरेंट) है। 'System' को 'exec' में बदलें। – ikegami