मुझे बैश की समस्या है, और मुझे नहीं पता कि क्यों।
खोल के नीचे, मैं दर्ज करता हूं:
echo $$ ## print 2433
(echo $$) ## also print 2433
(./getpid) ## print 2602
"गेटपिड" एक सी प्रोग्राम है जो वर्तमान पीआईडी पाने के लिए है, जैसे:
int main() { printf("%d", (int)getpid()); return 0; }
मुझे क्या उलझन है:
- मुझे लगता है कि "(कमांड)" एक उप-प्रक्रिया है (क्या मैं सही हूं?), और मुझे लगता है कि इसके माता-पिता को इसके माता-पिता के साथ अलग होना चाहिए, लेकिन वे एक ही हैं, क्यों ...
- जब मैं कोष्ठक के बीच pid दिखाने के लिए अपने प्रोग्राम का उपयोग करता हूं, तो जो pid दिखाता है वह अलग है, क्या यह सही है?
- क्या '$ $' मैक्रो जैसा कुछ है?
क्या आप मेरी मदद कर सकते हैं?
echo $$ $BASHPID ; ( echo $$ $BASHPID )
यह प्रदर्शित करता है कि यह करता है। गोल कोष्ठक एक उपधारा बनाते हैं। बयान परिवर्तनशील मान बदल सकते हैं, और मूल शेल को उन परिवर्तनों को नहीं देखना चाहिए। इसे एक fork()
ऑपरेशन के रूप में लागू किया गया है ।
getpid
एक अलग प्रक्रिया आईडी दिखाएगा भले ही यह एक उपधारा में नहीं चलाया गया हो।