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 stderr?

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.

-Steve

Reply via email to