Skip to content

Foreground Job Control Overhaul

Michael Aaron Murphy requested to merge develop into master

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.

Merge request reports