У меня есть фоновый процесс, который я хотел бы ожидать (если он терпит неудачу или умрет), если только я не получаю пользовательский ввод. С другой стороны, пользовательский вход должен прерывать мое ожидание.Дождитесь завершения процесса или ввода пользователем
Вот упрощенный фрагмент моего кода
#!/bin/bash
...
mplayer -noconsolecontrols "$media_url" &
sleep 10 # enough time for it to fail
ps -p $!
if [ $? -ne 0 ]
then
fallback
else
read
kill $!
fi
Лини, что мне особенно не нравится это sleep 10
, что плохо, потому что это может быть слишком много времени, или не хватает времени.
Есть ли способ для wait $! || read
или эквивалент?
Это очень плохое состояние гонки.Предположим, что процесс умирает во время сна, затем начинается другой процесс с тем же pid. Вы будете наблюдать за другим (случайным) процессом! – mvds