I'd like to do the following: auto pipes = pipeShell(command, Redirect.stdout | Redirect.stderr);
while(true){ version(A1) string line=pipes.stdout.readln; version(A2) auto line=pipes.stdout.readChunk(10); version(A3) auto line=pipes.stdout.readChar(); // do something with line if(tryWait(pipes.pid).terminated) break; } The problem is that 'string line=pipes.stdout.readln;' seems to block until the process is terminated, ie if the command is a long running command that prints a line every 1 second for 10 seconds, this program will wait 10 seconds before starting the processing. I also tried with rawRead, readf, fgetc but couldn't make it work. I'm on OSX, if that matters. Is there any way to achieve this?