Care about closing copied file-descriptor/ports in parent and child of
RUN/FG*.
This commit is contained in:
parent
843ed0493b
commit
8eedb14ef3
|
@ -329,24 +329,24 @@
|
|||
(let ((foreground-pgrp (tty-process-group (current-output-port)))
|
||||
(proc
|
||||
(fork
|
||||
(lambda ()
|
||||
(lambda ()
|
||||
;; this a forked child
|
||||
(close-input-port rport)
|
||||
(set-process-group (pid) (pid))
|
||||
(set-tty-process-group (current-output-port) (pid))
|
||||
(let ((status (eval-s-expr s-expr)))
|
||||
;; I don't understand it. Send list, will work.
|
||||
;; Send integer, READ will sit there and wait for ever.
|
||||
;; Sigh.
|
||||
(write (list status) wport)
|
||||
(write status wport)
|
||||
(close-output-port wport)
|
||||
;; We can't call EXIT with a scsh encoded status code,
|
||||
;; because the value does not fit into a byte. Sigh.
|
||||
;; Send value over pipe instead.
|
||||
(exit 0))))))
|
||||
(close-output-port wport)
|
||||
(let* ((job (make-job-sans-console
|
||||
s-expr proc
|
||||
;; truely evil, I think.
|
||||
(lambda (ignore)
|
||||
(let ((v (car (read rport)))) ;; see above
|
||||
(let ((v (read rport)))
|
||||
(close-input-port rport)
|
||||
v))))
|
||||
(status (job-status job)))
|
||||
|
|
Loading…
Reference in New Issue