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