I'm new to D, and I find it quite enjoyable so far.
I have however stumbled upon a problem which I can't seem to
figure out.

I am trying to make a program that creates a child process,
writes something to the child process stdin and reading from its
stdout. I am going to use it later for testing out process pair
redundancy.

Appearently the child blocks at "s = stdin.readln()". If I remove
all writing to the child, and instead just read its output,
everything works fine. My code is attached below:

import std.process,std.stdio,std.getopt,core.thread;

void main(string[] args){
        bool backup = false;
        getopt(args, "backup", &backup);
        writeln("Something worked!");
        string s = "test";
        if (backup){
                writeln("Backup up & running");
                while(true){
                        s = stdin.readln();
                        writeln(s);
                }
        }
        auto pipes = pipeProcess(["./pipetest", "--backup"],
Redirect.all);
        for(int j = 0; j<5; j++){
                writeln(j);
                pipes.stdin.writeln(j);
                writeln(pipes.stdout.readln());
                Thread.sleep(500.msecs);
        }
        while(true){}

}



If anyone could spot what rudimentary mistake I have done, I
would greatly appreciate it. Alternatively, suggesting another
way to implement inter-process communication would also be
appreciated :D

Reply via email to