nushell/crates/nu-system
Ian Manske 924986576d
Do not block signals for child processes (#11402)
# Description / User-Facing Changes
Signals are no longer blocked for child processes launched from both
interactive and non-interactive mode. The only exception is that
`SIGTSTP`, `SIGTTIN`, and `SIGTTOU` remain blocked for child processes
launched only from **interactive** mode. This is to help prevent nushell
from getting into an unrecoverable state, since we don't support
background jobs. Anyways, this fully fixes #9026.

# Other Notes
- Needs Rust version `>= 1.66` for a fix in
`std::process::Command::spawn`, but it looks our current Rust version is
way above this.
- Uses `sigaction` instead of `signal`, since the behavior of `signal`
can apparently differ across systems. Also, the `sigaction` man page
says:
> The sigaction() function supersedes the signal() function, and should
be used in preference.

Additionally, using both `sigaction` and `signal` is not recommended.
Since we were already using `sigaction` in some places (and possibly
some of our dependencies as well), this PR replaces all usages of
`signal`.

# Tests
Might want to wait for #11178 for testing.
2024-01-15 16:08:21 -06:00
..
examples Reduce again the number of match calls (#7815) 2023-01-24 12:23:42 +01:00
src Do not block signals for child processes (#11402) 2024-01-15 16:08:21 -06:00
.gitignore Add nu-system and rewrite ps command (#734) 2022-01-14 17:20:53 +11:00
Cargo.toml Bump to dev version 0.89.1 (#11513) 2024-01-11 00:19:21 +13:00
LICENSE Nu glob (#4818) 2022-03-13 11:30:27 -07:00