Pipe one shell command into another
Andrew via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jan 30 09:11:31 PST 2016
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
More information about the Digitalmars-d-learn
mailing list