Hi,
I'd like to run a shell command which involves piping one thing
into another and then processes the output line by line, i.e.
something like "ls -l | sort -k5,5n"
What I've come up so far with is:
import std.process;
import std.stdio;
void main(){
auto pipesLs = pipeProcess(["ls", "-l"], Redirect.stdout);
auto pipesSort = pipeProcess(["sort", "-k5,5n"], Redirect.all);
scope (exit) wait(pipesSort.pid);
foreach(line; pipesLs.stdout.byLine)
pipesSort.stdin.writeln(line);
pipesSort.stdin.close;
foreach(line; pipesSort.stdout.byLine)
writeln(line);
}
This seems to work on this simple example, but is there a better
way to do it, and if not, is this reliable? Also, could someone
explain to me the necessity of the wait command?
Thanks very much
Andrew