On 3/1/18 11:50 PM, Nick Sabalausky (Abscissa) wrote:
I'd like to include this functionality in Scriptlike, but I don't know
if it's even possible:
Launch a process (spawnProcess, pipeShell, etc) so the child's
stdout/stderr go to the parent's stdout/stderr *without* the possibility
of them getting inadvertently reordered/reinterleaved when viewed on the
terminal, *and* still allow the parent to read the child's stdout and
How could this be accomplished? Is it even possible?
You'd have to do this in the parent. You can duplicate the file
descriptor, so that writing to either goes to the same spot, but you
can't "fork" the file descriptor, so that writing to one goes to 2 spots.
With Phobos's std.process, you would have to allocate a buffer to store
the data as you read from the pipe and wrote it to the terminal, it
wouldn't be automatic.
I can think of an easy way to do it in iopipe, but it still would be
dependent on the reader actually reading the data from the pipe. In
other words, it wouldn't come out when the child wrote, it would only
come out when the parent read. But this might be inherent in what you
want, because the only way to prevent interleaving is to control it all
from one place.