मुझे एक उपखंड बनाने के लिए बैश नियम की गलतफहमी प्रतीत होती है। मैंने सोचा था कि कोष्ठक हमेशा एक उपधारा बनाता है, जो अपनी प्रक्रिया के रूप में चलता है।
हालाँकि, ऐसा प्रतीत नहीं होता है। कोड स्निपेट ए (नीचे) में, दूसरा sleep
कमांड एक अलग शेल में नहीं चलता है (जैसा कि pstree
दूसरे टर्मिनल में निर्धारित किया गया है)। हालांकि, कोड स्निपेट बी में, दूसरा sleep
आदेश है एक अलग खोल में चलाते हैं। स्निपेट्स के बीच एकमात्र अंतर यह है कि दूसरे स्निपेट को कोष्ठकों के भीतर दो कमांड हैं।
जब कोई उपधाराएँ बनाई जाती हैं, तो क्या कोई नियम की व्याख्या कर सकता है?
कोड स्लीपपेट ए:
sleep 5
(
sleep 5
)
कोड स्लीपपेट बी:
sleep 5
(
x=1
sleep 5
)
fork
और कॉल करके चाइल्ड प्रोसेस (बाहरी कमांड्स निष्पादित करने के लिए) बनाई जाती हैfork + exec
। लेकिन आपके पहले पैरा से पता चलता है किfork + exec
सब्सक्रिप्शन के लिए भी कॉल किया जाता है। मैं यहाँ क्या गलत कर रहा हूँ?