[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-janitors] #766: posix: can't collect exit status and close all
From: |
Chicken Trac |
Subject: |
[Chicken-janitors] #766: posix: can't collect exit status and close all process ports at the same time |
Date: |
Tue, 27 Dec 2011 18:47:48 -0000 |
#766: posix: can't collect exit status and close all process ports at the same
time
---------------------+------------------------------------------------------
Reporter: syn | Owner:
Type: defect | Status: new
Priority: major | Milestone: 4.8.0
Component: unknown | Version: 4.7.x
Keywords: |
---------------------+------------------------------------------------------
It is currently impossible to call {{{process-wait}}} on a PID to collect
the exit status of child process and close all associated input and output
ports afterwards. This is due to {{{close-[input|output]-port}}}
implicitly calling {{{process-wait}}} on process pipe ports. This leads to
errors like
{{{
Error: (process-wait) waiting for child process failed - No child
processes: 10872
}}}
because the process has already been purged by the OS at that point. For
the time being this can be worked around by calling {{{file-close}}} on
the ports' file descriptors.
A possible solution might be to
[http://www.scsh.net/docu/html/man-Z-H-4.html#node_sec_3.4.1 encapsulate
processes in process objects similar to Scsh] (or [http://docs.racket-
lang.org/reference/subprocess.html subprocess values as Racket calls
them]) and change {{{process-wait}}} to retain the process' exit status
once it has been collected, allowing for it to be called multiple times.
This would of course break backwards compatibility and thus should be
handled as a Change Request. See also: [https://github.com/sellout
/external-program/wiki/API Common Lisp external-program library]. Comments
welcome.
--
Ticket URL: <http://bugs.call-cc.org/ticket/766>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.
- [Chicken-janitors] #766: posix: can't collect exit status and close all process ports at the same time,
Chicken Trac <=