从C#运行控制台应用程序,但应用程序无法创建文件

时间:2009-05-11 14:34:38

标签: c# file console

我有Windows窗体应用程序运行另一个控制台应用程序 这是代码的一部分

prog = new Process();
prog.StartInfo.FileName = exefile;

控制台应用程序应该创建文件,但是当从C#运行该应用程序时,它不会创建任何文件 当我运行控制台应用程序双击它工作正常 这是“exefile”代码的一部分(在c ++上)

freopen("file.in","r",stdin);
freopen("file.out","w",stdout);
printf("somedata\n");

“file.in”肯定存在

3 个答案:

答案 0 :(得分:2)

最可能的是你需要设置工作路径:

prog.StartInfo.WorkingDirectory = ...

即。我认为它无法在当前应用程序文件夹中找到file.in。

答案 1 :(得分:1)

每当您想要开始此过程时,您需要添加此行:

prog.Start();

Here is the link to the MSDN page for Process.Start.您可能需要考虑几种重载。

答案 2 :(得分:0)

我建议,

  • 处理异常以查看出现了什么问题
  • 之前提到的确保你 调用start()方法

以下是来自msdn的代码片段,您可能想要参考

Process myProcess = new Process();

        try
        {
            // Get the path that stores user documents.
            string myDocumentsPath = 
                Environment.GetFolderPath(Environment.SpecialFolder.Personal);

            myProcess.StartInfo.FileName = myDocumentsPath + "\\MyFile.doc"; 
            myProcess.StartInfo.Verb = "Print";
            myProcess.StartInfo.CreateNoWindow = true;
            myProcess.Start();
        }
        catch (Win32Exception e)
        {
            if(e.NativeErrorCode == ERROR_FILE_NOT_FOUND)
            {
                Console.WriteLine(e.Message + ". Check the path.");
            } 

            else if (e.NativeErrorCode == ERROR_ACCESS_DENIED)
            {
                // Note that if your word processor might generate exceptions
                // such as this, which are handled first.
                Console.WriteLine(e.Message + 
                    ". You do not have permission to print this file.");
            }
        }