On Saturday, 30 January 2016 at 15:57:49 UTC, Griffon26 wrote:
On Saturday, 30 January 2016 at 15:12:26 UTC, Andrew wrote:
foreach(line; pipesLs.stdout.byLine)
pipesSort.stdin.writeln(line);
Because you write sort's input first and read its output later,
it might end up blocking if ls generates too much data. The
output pipe of sort will fill up, causing sort to block and not
read data from its input pipe anymore, resulting in your
program blocking when the input pipe has filled up.
I have a piece of code using poll to write to two input pipes
and read from one output pipe, but it's a bit more complex than
what you need. However, it also uses pipeShell to specify
multiple commands at once. Since your program only needs to
read the output (and not generate input), you may find
pipeShell useful.
https://github.com/Griffon26/tdiff3/blob/87709dd51c279e9896f37ba1cef477a525e44562/source/gnudiff.d
Disclaimer: I'm not an experienced D programmer. My D code may
not be pretty =)
pipeShell did the trick.
Thank you very much!
Andrew