1

Я реализую решение по ведению журнала, представленное здесь, и я не знаю, требуются ли следующие строки при выходе из родительского процесса / сценария Bash:

if [ -n "$teepid" ]; then
    exec 1>&- 2>&-  # Close file descriptors to signal EOF to the `tee`
                    # command in the background process
    wait $teepid # Wait for background process to exit
fi

Эти строки можно найти в функции log() и в конце скрипта. Я знаю, что они требуются в функции log() , но требуются ли они в конце скрипта?

Другими словами: будет ли хорошо работать мое фоновое задание без написания вышеупомянутого кода перед каждой командой exit в моем родительском процессе?

1 ответ1

1

Процесс, идентифицируемый PID $teepid использовании & . Если вы выходите, не дожидаясь завершения этого PID, единственное, что может случиться, - это то же самое, что происходит, если вы используете & в оболочке. Вы нажмете [Enter] на более позднем этапе и получите сообщение о выходе [1] {pid} exited (или что-то подобное, точно не помню сейчас), прежде чем отобразится ваша следующая строка приглашения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .