বাশের সাথে আমার সমস্যা আছে, এবং আমি জানি না কেন।
শেলের নিচে, আমি লিখি:
echo $$ ## print 2433
(echo $$) ## also print 2433
(./getpid) ## print 2602
"গেটপিড" হ'ল একটি সি প্রোগ্রাম যা বর্তমান পিড পাওয়ার জন্য:
int main() { printf("%d", (int)getpid()); return 0; }
যা আমাকে বিভ্রান্ত করে তা হ'ল:
- আমি মনে করি "(কমান্ড)" একটি উপ-প্রক্রিয়া (আমি ঠিক আছি?), এবং আমি মনে করি এটির পিডটি তার পিতামাতার পিডের সাথে আলাদা হওয়া উচিত, তবে তারা একই, কেন ...
- আমি যখন প্রথম প্রোগ্রামটি প্রথম বন্ধনীগুলির মধ্যে পিড দেখানোর জন্য ব্যবহার করি তখন এটি যে পিড দেখায় তা অন্যরকম হয়, তাই না?
- '$$' ম্যাক্রোর মতো কিছু?
আপনি কি আমাকে সাহায্য করতে পারেন?
echo $$ $BASHPID ; ( echo $$ $BASHPID )
দেখায় যে এটি করে। গোলাকার বন্ধনী একটি সাব-শেল তৈরি করে। বিবৃতিগুলি পরিবর্তনশীল মানগুলি পরিবর্তন করতে পারে এবং প্যারেন্ট শেল অবশ্যই সেই পরিবর্তনগুলি দেখতে পাবে না। এটি একটি fork()
অপারেশন হিসাবে প্রয়োগ করা হয়।
getpid
এটি কোনও সাবসিলে চালিত না হলেও একটি পৃথক প্রক্রিয়া আইডি দেখায়।