D 如何将数据传递到控制台应用程序并进行处理';谁的产量?

D 如何将数据传递到控制台应用程序并进行处理';谁的产量?,d,D,我有一个控制台应用程序,可以启动参数,然后输出计算结果 示例(来自): 177502 311865 在逐步模式下,其工作原理如下: gdaltransform-s_srs EPSG:28992-t_srs EPSG:31370[按enter键] 我从键盘输入:177502 311865[按enter键] 在屏幕上打印新坐标:244296.723070577 165937.350438393 1.60975147597492 我需要从D调用它,传递输入参数,并处理它的输出 看来我需要使用它,但我不

我有一个控制台应用程序,可以启动参数,然后输出计算结果

示例(来自):

177502 311865

在逐步模式下,其工作原理如下:

  • gdaltransform-s_srs EPSG:28992-t_srs EPSG:31370
    [按enter键]
  • 我从键盘输入:
    177502 311865
    [按enter键]
  • 在屏幕上打印新坐标:
    244296.723070577 165937.350438393 1.60975147597492
  • 我需要从D调用它,传递输入参数,并处理它的输出

    看来我需要使用它,但我不知道如何使用它

    这是我的密码:

    导入标准stdio;
    进口标准工艺;
    导入标准文件;
    void main()
    {
    自动管道=管道处理([“gdaltransform”,“-s_srs epsg:4326-t_srs epsg:3857”],Redirect.stdout);
    范围(退出)等待(pipes.pid);
    }
    
    但是如何读取
    gdaltransform
    输出到变量,然后终止app?

    import std.stdio;
    进口标准工艺;
    void main(){
    //通过pipeProcess生成子进程
    自动管道=管道流程([“gdaltransform”、“-s_srs”、“EPSG:28992”、“-t_srs”、“EPSG:31370”]、重定向.all);
    //或者通过管壳
    //自动管道=管壳(“gdaltransform-s_srs EPSG:28992-t_srs EPSG:31370”,重定向.all);
    范围(退出){
    //向子进程发送终止信号
    压井(pipes.pid);
    //等待终止
    等待(pipes.pid);
    }
    //将数据写入孩子的stdin
    管道。标准书面形式(“177502、311865”);
    //关上孩子的门
    管道.stdin.close();
    //从孩子的标准输出读取数据
    字符串行=pipes.stdout.readln();
    写入(“结果:”,行);
    }
    
    调用
    close
    是否有特定原因?也许
    flush
    就足够了?
    flush
    应该足够了,但在我的CentOS 7上不应该。我不知道为什么。也许,
    gdaltransform
    没有刷新它的stdio
    gdaltransform -s_srs EPSG:28992 -t_srs EPSG:31370