wait
একটি পিআইডি ব্যবহার করুন , যা এটি করবে:
শিশু প্রক্রিয়া প্রতিটি প্রসেসের ID দ্বারা উল্লিখিত পর্যন্ত অপেক্ষা PID অথবা চাকরি স্পেসিফিকেশন jobspec প্রস্থানের এবং রিটার্ন গত কমান্ডের প্রস্থান অবস্থা অপেক্ষা করলো।
আপনার প্রতিটি প্রসেসের পিআইডি সংরক্ষণ করতে হবে:
echo "x" & X=$!
echo "y" & Y=$!
echo "z" & Z=$!
আপনি স্ক্রিপ্টে কাজের নিয়ন্ত্রণ সক্ষম করতে এবং set -m
একটি %n
জবস্পেক ব্যবহার করতে পারেন , তবে আপনি প্রায় অবশ্যই চান না - কাজের নিয়ন্ত্রণের অনেকগুলি অন্যান্য পার্শ্ব প্রতিক্রিয়া রয়েছে ।
wait
প্রক্রিয়াটি শেষ হওয়ার সাথে সাথে একই কোডটি ফিরিয়ে দেবে। আপনি wait $X
চূড়ান্ত কোডটি অ্যাক্সেস করতে পরবর্তী কোনও (যুক্তিসঙ্গত) বিন্দুতে ব্যবহার করতে পারেন $?
বা কেবল এটি সত্য / মিথ্যা হিসাবে ব্যবহার করতে পারেন:
echo "x" & X=$!
echo "y" & Y=$!
...
wait $X
echo "job X returned $?"
wait
কমান্ডটি সম্পূর্ণ না হওয়া অবধি বিরতি দেবে যদি তা ইতিমধ্যে না হয়ে থাকে।
আপনি যদি এ জাতীয় স্টলিং এড়াতে চান, আপনি একটি trap
চালুSIGCHLD
করতে পারেন , অবসানের সংখ্যা গণনা করতে পারেন এবং সমস্তগুলি শেষ wait
হয়ে গেলে একবারে হ্যান্ডেল করতে পারেন । আপনি সম্ভবত wait
প্রায় সব সময় একা ব্যবহার করে পালাতে পারেন ।