সঙ্গে 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
কাজ করে না। প্রক্রিয়াটি সংগ্রহ করা হয় এবং প্রম্পট প্রদর্শিত হওয়ার আগেই ডিফল্ট স্থিতি বাতিল করা হয় (ডিফল্টরূপে)।