/ / बैश: बच्चा अपने पीआईडी ​​को सही ढंग से प्राप्त नहीं कर सकता है - लाइनक्स, बैश

बैश: बच्चे को पीआईडी ​​सही ढंग से नहीं मिल सकता है - लिनक्स, बैश

ऐसा क्यों है कि जब मैं नीचे की स्क्रिप्ट चलाता हूं, तो माता-पिता और बच्चे दोनों सोचते हैं कि उनके पास एक ही तरह की तस्वीर है?

#!/bin/bash

foo ()
{
while true
do
sleep 5
echo child: I am $$
done
}


( foo ) &

echo parent: I am $$ and child is $!

>./test.sh
parent: I am 26542 and child is 26543
>child: I am 26542
child: I am 26542

उत्तर:

उत्तर № 1 के लिए 4

बैश में, हैं $$ तथा $BASHPID चर जो कुछ भ्रामक हैं। $$ स्क्रिप्ट की एक प्रक्रिया आईडी है। $BASHPID बश के वर्तमान उदाहरण की एक प्रक्रिया आईडी है। ये चीजें समान नहीं हैं, लेकिन अक्सर समान परिणाम देते हैं। आपके मामले में, आपने इसका गलत उपयोग किया है। की जगह $$ साथ में $BASHPID समारोह में foo समस्या का समाधान होगा ।

देख आंतरिक चर का संभाग बैश एडवांस्ड स्क्रिप्टिंग गाइड अधिक जानकारी के लिए।