fix job control on FreeBSD and macOS: do not use WCONTINUED
Go's syscall.WaitStatus decodes the "continued" status wrongly on BSD: on FreeBSD it is read as killed by SIGCONT, so after bg the job was reported as "Exit 147" and removed from the job table while it was still running (fg: "no such job"); on macOS it is read as stopped. The shell marks jobs as running itself when it continues them, so wait4 is called without WCONTINUED and only exited/signaled statuses finish a process. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
187de30351
commit
da281ca4ab
3 files changed
+42
-8
No files matched your search
@@ -256,6 +256,7 @@ $ bg %2 # oder: angehaltenen Job im Hintergrund weiterlauf
|
||||
- `exit` (oder Ctrl+D) mit angehaltenen Jobs warnt einmal (`there are stopped jobs`), ein zweites `exit` direkt danach beendet gosh.
|
||||
- `cd`, `set`, `export`, `exit`, `source`, `fg`, `bg` und `wait` lassen sich nicht mit `&` im Hintergrund starten.
|
||||
- In Skripten und mit `gosh -c` gibt es keine Job-Control (kein Ctrl+Z, kein `fg`/`bg`), `&` und `wait` funktionieren aber. Hintergrund-Jobs lesen dort von `/dev/null`.
|
||||
- Wird ein angehaltener Job von außen fortgesetzt (`kill -CONT`), zeigt `jobs` ihn weiter als `Stopped`, bis er endet oder erneut angehalten wird; `fg` und `bg` funktionieren trotzdem.
|
||||
- Einen Job beenden lässt sich mit `kill` über die Prozess-ID (z. B. `kill 12345`); `kill %1` versteht gosh noch nicht.
|
||||
|
||||
### Farben
|
||||
|
||||
Reference in new issue
Block a user