जब मैं system()
पर्ल में कॉल करता हूं, तो आमतौर पर perldocs के अनुसार रिटर्न कोड का निरीक्षण करता हूं। अच्छा, मैंने ऐसा सोचा। अधिकांश समय $rc!=0
मेरे लिए पर्याप्त है। हाल ही में मैंने दो लोगों की मदद की, जिनमें system()
कॉल के साथ परेशानी थी जब अपाचे के तहत अपनी .cgi स्क्रिप्ट चलाते थे। मैं की $rc
my $rc = system(...);
जांच करने के लिए उन्हें निर्देश दिए हैं और उन्हें system()
डॉक्स से जुड़ा हुआ। तब मैं करीब देखा और डॉक्स वास्तव में $rc
लेकिन $?
बजाय के बारे में के बारे में बात नहीं कर रहे हैं और मुझे थोड़ा शर्मिंदा महसूस किया और निम्नलिखित प्रश्न पैदा हुआ:
system(...);
if ($? == -1) {
print "failed to execute: $!\n";
}
elsif ($? & 127) {
printf "child died with signal %d, %s coredump\n",
($? & 127), ($? & 128) ? 'with' : 'without';
}
else {
printf "child exited with value %d\n", $? >> 8;
}
और:
वहाँ के बीच एक अंतर है
my $rc = system(...);
if ($rc == -1) {
print "failed to execute: $!\n";
}
elsif ($rc & 127) {
printf "child died with signal %d, %s coredump\n",
($rc & 127), ($rc & 128) ? 'with' : 'without';
}
else {
printf "child exited with value %d\n", $rc >> 8;
}
या, छोटे के लिए, $rc
$?
के बराबर system()
के लिए है?
मैंने system, wait, और $? के दस्तावेज़ों को देखा लेकिन यह मेरे लिए बिल्कुल स्पष्ट नहीं है। क्या मैंने पिछले 15 वर्षों से $rc
का उपयोग कर गलत किया है?
आप परिणाम कैप्चर करते हैं करने के लिए '$ वहाँ' $ का कोई मौका नहीं है rc' 'इससे पहले कि आप करने के लिए चारों ओर पाने के तुम पर बदल रहा है? उस मूल्य का उपयोग कर। – tadman
धन्यवाद @tadman। मैंने स्वीकृत उत्तर पर एक टिप्पणी जोड़ा जो आपकी टिप्पणी पर भी लागू होता है। '$ आरसी' का उपयोग करना मेरे लिए क्लीनर तरीका लगता है। – PerlDuck