2013-05-16 1 views
1

Я разрабатываю приложение для получения резервной копии из моей базы данных postgreSQL с помощью C#. i, m, используя код ниже, чтобы выполнить и выйти из pg_dump.exe.не может выйти из командной строки pg_dump.exe

ProcessStartInfo startinfo = new ProcessStartInfo 
     { 
      FileName = "\"C:\\Program Files (x86)\\pgAdmin III\\1.16\\pg_dump.exe\"", 
      Arguments = "--host XXX.XXX.XXX.XXX --port 5432 --username \"USERNAME\" --no-password --format plain --verbose --file \"D:\\MYBACKUP.backup\" \"MYDBNAME\"", 
      UseShellExecute = false, 
      RedirectStandardOutput = true, 
      CreateNoWindow = true 
     }; 

     Process proc = new Process(); 
     proc.StartInfo = startinfo; 
     proc.Start(); 


     while (!proc.StandardOutput.EndOfStream) 
     { 
      var r = proc.StandardOutput.ReadLine(); 
     } 

     proc.WaitForExit(); 
     Console.WriteLine(proc.ExitCode); 
     Console.ReadLine(); 

но proc.StandardOutput.ReadLine всегда возвращает null !!!

я пытаюсь поставить pg_dump.exe вывод в файл с командой propt так:

C:\Program Files (x86)\pgAdmin III\1.16>pg_dump.exe > d:\log.txt 

но опять log.txt пуста !!

благодарит заранее.

ответ

2

Заменить RedirectStandardOutput с RedirectStandardError.

мой рабочий код:

ProcessStartInfo startinfo = new ProcessStartInfo 
{ 
    FileName = "Path to pg_dump.exe", 
    Arguments = "Arguments", 
    UseShellExecute = false, 
    RedirectStandardError = true, 
    CreateNoWindow = true 
}; 

using (Process process = Process.Start(startinfo)) 
{ 
    using (StreamReader reader = process.StandardError) 
    { 
     StreamWriter sw = new StreamWriter(@"C:\log.txt"); 
     sw.WriteLine(reader.ReadToEnd()); 
     sw.Close(); 
    } 
}