O que acontece quando você faz o background de uma função que chama outra função?

2

Estou tentando descobrir como colocar em segundo plano um processo em um script que chama outra função e terminá-la de maneira confiável quando estiver pronto. Vou ter que mudar tudo em uma função?

function dosomething {
    while :
    do
    printsomething "doing something"
    done
}

function printsomething {
    echo $@
}

function otherfunction {
    dosomething &
    TMP_PID=$!
}

function killsomething {
    quit_test='ps -p "$TMP_PID" | sed '1d' | awk '{print $1}''
    if [ "$quit_test" != "" ] ; then
        (kill $TMP_PID >/dev/null)
    fi
}

## MAIN

    TMP_PID=""
    echo "starting program"
    otherfunction
    sleep 5s
    killsomething
    
por lolfrog 23.12.2011 / 06:48

0 respostas