Запуск консольного приложения из C #, но приложение не может создать файл - PullRequest
1 голос
/ 11 мая 2009

У меня есть приложение Windows Forms, которое запускает другое консольное приложение. вот часть кода

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 ]

2 голосов
/ 11 мая 2009

Скорее всего, вам нужно установить рабочий путь:

prog.StartInfo.WorkingDirectory = ...

т.е. Я думаю, он не может найти файл file.in в текущей папке приложения.

1 голос
/ 11 мая 2009

Вам нужно добавить эту строку всякий раз, когда вы хотите начать процесс:

prog.Start();

Вот ссылка на страницу MSDN для Process.Start. Существует несколько перегрузок, которые вы можете рассмотреть.

0 голосов
/ 11 мая 2009

Я бы предложил,

  • обработайте исключения, чтобы увидеть, что происходит
  • как упомянуто прежде, убедитесь, что вы вызвать метод 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.");
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...