1

我正在尝试使用 Process.Start 运行 fortran 可执行文件,但它不工作。

Process proc = new Process();
string args = "<C:\\file.in> C:\\file.out";
proc.StartInfo = new ProcessStartInfo(AppName, args);
proc.Start();

如果我将这些参数粘贴到命令窗口中,应用程序将按预期运行。proc.Start() 未按预期运行。

有什么想法可以查看 Start 实际上作为参数传递的内容吗?我的直觉是,这是一个报价问题。

可执行文件启动并挂起,因此我确信 AppName 已正确传递,这看起来像是一个参数问题。

我尝试按照以下问题中的建议将 WorkingDirectory 设置为输入和输出文件:process.start() 参数,但这不起作用。

4

2 回答 2

1

<使用和命令行运算符进行重定向>是由命令行处理器实现的功能。哪个是 cmd.exe。使用它的 /c 参数只执行一个命令:

string args = "/c " + AppName + " < C:\\file.in > C:\\file.out";
proc.StartInfo = new ProcessStartInfo("cmd.exe", args);
proc.Start();
于 2012-06-06T00:12:55.497 回答
0

您的args字符串正是作为参数传递给可执行文件的内容。您可以阅读您的 Process ProcessStartInfo.Arguments Property仔细检查它。

类似的事情曾经发生在我身上,即从命令行调用可执行文件有效而从代码没有,结果证明当从命令行调用可执行文件时,可执行文件正在我的 PC 的[C:]驱动器上运行,而当从它在我的 PC 的[E:]驱动器上运行的代码调用,该驱动器已满!

要检查您的应用程序使用哪个目录来运行可执行文件,请使用Directory.GetCurrentDirectory 方法

于 2012-06-06T01:37:15.210 回答