Попытка отключить сенсорную панель при пробуждении

teeвнутри подстановки процесса не завершится, пока он не получит eof на свой стандартный ввод или не произойдет какая-либо ошибка.

И, поскольку его стандартный ввод является каналом, он получит EOFна своем стандартном вводе только тогда, когда все дескрипторы его конца записи будут закрыты.

Итак, вам придется сохранить исходные stdout и stderr, а затем перед waitперенаправить их на исходники; Дублирование fd через new>&oldприводит к закрытию oldfd.

exec {out}>&1 {err}>&2
exec > >(tee -a output) 2>&1
...
exec >&$out 2>&$err
wait $(pgrep -P "$$")

Кроме того, только в более новых версиях bash waitтакже ожидает процессов, запущенных в > >(...)подстановке процессов; поэтому я использовал wait $(pgrep -P "$$")вместо простогоwait(pgrep -Pпоиска процессов по их родителю ). Также см. здесь для этой и других ловушек, связанных с > >(...).

0
24.05.2021, 16:49
0 ответов

Теги

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