সঙ্গে bash, আপনি যে গ্যারান্টি হবে যদি না আপনি অন্য পটভূমি কাজ শুরু করেছি (এবং হুঁশিয়ার করে পটভূমি কাজ দিয়ে শুরু করা যেতে পারে &কিন্তু সঙ্গে coprocমধ্যবর্তী এবং প্রক্রিয়া প্রতিকল্পন সঙ্গে) foo &এবং wait।
পসিক্সের প্রয়োজন যে কোনও শেল কমপক্ষে 25 টি কাজ সেরে যাওয়ার পরে তার প্রস্থান স্থিতিbash মনে রাখে তবে এর চেয়ে অনেক বেশি মনে পড়ে।
এখন, আপনি যদি:
foo & pid=$!
...
bar &
wait "$pid"
আপনার কাছে কোনও গ্যারান্টি নেই যা barআপনাকে একই ধরণের পিড দেওয়া হবে না foo(যদি fooসময় barশুরু হওয়ার সাথে সাথে শেষ করা হয় ), তবে এটি অসম্ভব হলেও, wait "$pid"আপনাকে প্রস্থান স্থিতি দিতে পারে bar।
আপনি এটি দিয়ে পুনরুত্পাদন করতে পারেন:
bash -c '(exit 12; foo) & pid=$!
while : bar & [ "$pid" != "$!" ]; do :;done
wait "$pid"; echo "$?"'
যা (শেষ পর্যন্ত) 0পরিবর্তে আপনাকে দেবে 12।
সমস্যা এড়ানোর জন্য, একটি উপায় হ'ল এটি লিখুন:
{
foo_pid=$!
while ps -p "$foo_pid"
do
ping -c 1 localhost
done
bar &
...
read <&3 ret
if [ "$ret" = 0 ]; then
echo foo was sucessful.
fi
} 3< <(foo > logfile 2>&1; echo "$?")
waitকাজ করে না। প্রক্রিয়াটি সংগ্রহ করা হয় এবং প্রম্পট প্রদর্শিত হওয়ার আগেই ডিফল্ট স্থিতি বাতিল করা হয় (ডিফল্টরূপে)।