[devel] shell programming

Alexey Tourbin at на altlinux.ru
Пт Янв 21 10:56:06 UTC 2011


On Fri, Jan 21, 2011 at 01:29:38PM +0300, Sergei Epiphanov wrote:
> Может, так лучше?
> 
> finished=
> 
> func() {
>         <что-то>
>         finished=1
> }
> 
> func &

Нет. :)

Функция func теперь будет выполняться в родительском процессе (subshell),
$! - это номер процесса, который вернул fork(2).  Переменные между
процессами не разделяются.

> for 1 2 3 4 5; do
>         sleep 1
>         if [ -n "$finished" ]; then
>                 wait
>                 break
>         fi
> done
> 
> if [ -z "$finished" ]; then
>         echo killing func >&2
>         kill $!
>         wait
> fi


Подробная информация о списке рассылки Devel