Ожидайте процесса для окончания

Вы должны знать, как печатать, чтобы быть программистом.

Это спорный среди людей, которые не знают, как ввести, но кто настаивают на том, что они могут два пальца охоты-и-клюют так же быстро, как и любой машинистки, или что они на самом деле не нужно тратить много времени на ввод или что Intellisense избавляет от необходимости печатать ...

Я никогда не встречал никого, кто знает , как печатать, но настаивает, что это не имеет значения.

См. Также: Самый грязный маленький секрет программирования

133
задан codeforester 11 April 2019 в 00:23
поделиться

2 ответа

Нет встроенной функции ожидания завершения какого-либо процесса.

Вы можете отправить kill -0 на любой найденный PID, чтобы вас не сбивали с толку зомби и тому подобное. по-прежнему будет отображаться в ps (при извлечении списка PID с помощью ps ).

2
ответ дан 24 November 2019 в 00:00
поделиться

Нет встроенного. Используйте kill -0 в цикле, чтобы получить работоспособное решение:

anywait(){

    for pid in "$@"; do
        while kill -0 "$pid"; do
            sleep 0.5
        done
    done
}

Или как более простую строку для простого одноразового использования:

while kill -0 PIDS 2> /dev/null; do sleep 1; done;

Как отметили несколько комментаторов, если вы хотите дождаться процессов, которые вы не имеете права посылать сигналы, вы нашли другой способ определить, запущен ли процесс, чтобы заменить вызов kill -0 $ pid . В Linux работает test -d "/ proc / $ pid" , в других системах вам, возможно, придется использовать pgrep (если доступно) или что-то вроде ps | grep "^ $ pid" .

77
ответ дан 24 November 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: