System.Diagnostics.Process:当我运行一个创建输出文件并写入内容的C ++程序时,不会创建输出文件

时间:2010-09-14 06:23:52

标签: c# file

当我运行一个创建输出文件并写入内容的C ++程序时,不会创建输出文件,尽管只需在Windows资源管理器中双击它就可以正常运行。

这是我用来运行程序的C#代码:

            try
            {
                Process p = StartProcess(ExecutableFileName);
                p.Start();
                p.WaitForExit();
                Log("Program finished in " + ((p.ExitTime - p.StartTime).Milliseconds / 1000m) + " seconds with code " + p.ExitCode + "\n");
            }
            catch
            {
                Log("The program couldn't be started.");
            }

更新

我刚刚发现它为什么会发生。

显然,当我使用C#启动它时,C ++程序在相对目录中看不到输入文件,但是当我明确指定它时

ifstream in("C:\\Alex\\primes.in");

它得到它,一切正常!现在我需要使用相对文件路径...

2 个答案:

答案 0 :(得分:1)

以下是我们对该问题的讨论摘要。事实证明,输出文件位于C#程序的调试文件夹中,而不是在C ++应用程序所在的目录中,并且输出是预期的。通过指定项目的工作目录属性来解决该问题。

答案 1 :(得分:0)

你必须在这样的过程中调用Close():

            try
            {
                Process p = StartProcess(ExecutableFileName);
                p.Start();
                p.WaitForExit();

                //THIS HERE
                p.Close();                    

                Log("Program finished in " + ((p.ExitTime - p.StartTime).Milliseconds /1000m) + " seconds with code " + p.ExitCode + "\n");


            }
            catch
            {
                Log("The program couldn't be started.");
            }