Foreground Job Control Overhaul
Job control in Ion was a complete mess, and it was a wonder that it even worked at one point to begin with! I've gone through and fixed a number of issues related to foreground job management.
- Processes are no longer preemptively killed by Ion to emulate SIGPIPE support.
- Processes within a pipeline are now assigned the same PGID.
- A SIGPIPE handler is now registered so that processes exit when they receive a SIGPIPE.
- Jobs should exit with the correct exit statuses in more situations.
- External commands now use fork + exec, rather than
std::process::Command
. - Redox's foreground job management was also improved.
- Some refactoring was performed, with more refactoring planned in the future.
There's likely some issues that remain to be addressed though. Needs more testing & bug reports. Background job management remains to be mostly broken for now, so that's an area to look into next.