Writing to stdin of a process
yazd via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Apr 26 04:58:03 PDT 2014
On Saturday, 26 April 2014 at 08:45:59 UTC, Craig Dillabaugh
wrote:
> I want to be able to write to the stdin stream of an external
> process using std.process. I have the following small test app.
>
> myecho.d
> ------------------------------------------------------------------
>
> import std.stdio;
>
> void main(string[] args)
> {
> foreach (line; stdin.byLine()) {
> stdout.writeln(line);
> }
> }
>
> ------------------------------------------------------------------
>
> If I call this from the command line, it echo's back whatever I
> write
> to it.
>
> Then I have the following program.
>
> testpipes.d
> -------------------------------------------------------------------
> import std.process;
> import std.stdio;
>
> void main( string[] args ) {
>
> auto pipes = pipeProcess("./myecho", Redirect.stdin );
> scope(exit) wait(pipes.pid);
>
> pipes.stdin().writeln("Hello world");
> }
> --------------------------------------------------------------------
>
> If I compile and run testpipes.d, nothing happens. I was
> expecting
> it to echo back "Hello world" to me.
>
> Can anyone tell me what I am dong wrong.
What you are missing is a call to flush() after writeln(). This
is necessary for pipes as they are only automatically flushed if
an internal buffer is full, AFAIK.
More information about the Digitalmars-d-learn
mailing list