mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-24 05:21:20 -08:00
external-process-wait: handle stopped process
we have a few possibilities here. Handle them correctly.
This commit is contained in:
parent
4554336fae
commit
2701310046
1 changed files with 9 additions and 4 deletions
|
|
@ -34,10 +34,15 @@
|
|||
(let ((pid (external-process-pid process)))
|
||||
(when pid
|
||||
(multiple-value-bind (status code pid) (si:waitpid pid wait)
|
||||
(unless (and wait (null status) (null code) (null pid))
|
||||
(setf (external-process-pid process) pid
|
||||
(external-process-%status process) status
|
||||
(external-process-%code process) code)))))
|
||||
(case status
|
||||
((:exitted :signalled :abort :error)
|
||||
(setf (external-process-pid process) nil
|
||||
(external-process-%status process) status
|
||||
(external-process-%code process) code))
|
||||
((:stopped :running)
|
||||
(setf (external-process-pid process) pid
|
||||
(external-process-%status process) status
|
||||
(external-process-%code process) code))))))
|
||||
(values (external-process-%status process)
|
||||
(external-process-%code process)))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue