mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-03-03 16:15:54 +00:00
Handle job-control signals and clear tostop
Prevent terminal job-control signals from suspending the script during recovery by trapping TSTP, TTIN and TTOU (instead of only TSTP) and restoring them on exit. Also clear the terminal 'tostop' flag in stop_spinner() with `stty -tostop` to avoid background spinner I/O from stopping the process group.
This commit is contained in:
@@ -4098,10 +4098,11 @@ EOF'
|
||||
|
||||
# Installation failed?
|
||||
if [[ $install_exit_code -ne 0 ]]; then
|
||||
# Prevent SIGTSTP (Ctrl+Z) from suspending the script during recovery.
|
||||
# Prevent job-control signals from suspending the script during recovery.
|
||||
# In non-interactive shells (bash -c), background processes (spinner) can
|
||||
# trigger terminal-related signals that stop the entire process group.
|
||||
trap '' TSTP
|
||||
# TSTP = Ctrl+Z, TTIN = bg read from tty, TTOU = bg write to tty (tostop)
|
||||
trap '' TSTP TTIN TTOU
|
||||
|
||||
msg_error "Installation failed in container ${CTID} (exit code: ${install_exit_code})"
|
||||
|
||||
@@ -4551,8 +4552,8 @@ EOF'
|
||||
post_update_to_api "failed" "$install_exit_code" "force"
|
||||
$STD echo -e "${TAB}${CM:-✔} Telemetry finalized"
|
||||
|
||||
# Restore default SIGTSTP handling before exit
|
||||
trap - TSTP
|
||||
# Restore default job-control signal handling before exit
|
||||
trap - TSTP TTIN TTOU
|
||||
exit $install_exit_code
|
||||
fi
|
||||
|
||||
|
||||
@@ -607,6 +607,7 @@ stop_spinner() {
|
||||
|
||||
unset SPINNER_PID SPINNER_MSG
|
||||
stty sane 2>/dev/null || true
|
||||
stty -tostop 2>/dev/null || true
|
||||
}
|
||||
|
||||
# ==============================================================================
|
||||
|
||||
Reference in New Issue
Block a user