Это только то, что задает вопрос.Кроме того, все, что у меня есть, - это PID, и оболочка, из которой я запускаю команду, не обязательно является оболочкой, которая первоначально вызывала процесс.Есть идеи?
while ps -p $PID >/dev/null 2>&1; do sleep 1; done
или
while ps -p $PID >/dev/null 2>&1; do :; done
Это не очень аккуратный способ сделать это, но вы можете непрерывно совершать системные вызовы kill(2) на указанный pid, выставляя ноль в качестве сигнала.В первый раз kill не удастся установить errno на ESRCH, вы можете заключить, что процесс завершился.
kill(2)
kill
errno
ESRCH
Вы можете проверить, существует ли каталог / proc / PID.Это кажется чище, чем отправка нескольких сигналов