﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	difficulty
766	posix: can't collect exit status and close all process ports at the same time	Moritz Heidkamp		"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. This could be worked around by calling {{{file-close}}} on the ports' file descriptors. However, {{{port->fileno}}} does not work on process ports.

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."	defect	closed	minor	6.0.0	core libraries	4.7.x	fixed			hard
