2012-06-28 5 views
0

Как я могу захватить или перенаправить ошибку, которая возникает для Process?Ошибка захвата для внешнего процесса

Я хочу получать сообщение об ошибке.

Код ниже не делает этого.

try 
{ 
    myProcess.StartInfo.UseShellExecute = false; 
    myProcess.StartInfo.FileName = process_to_run; 
    myProcess.StartInfo.Arguments = p_arg + " > "+process_to_run+".txt 2>&1"; 
    myProcess.StartInfo.CreateNoWindow = true; 
    myProcess.Start(); 
    myProcess.WaitForExit(); 

} 
catch (Exception ep) 
{ 
    richTextBox1.AppendText("\n" + ep.Message); 
    time_date = get_time(); 
    log_file.Write(time_date); 
    log_file.WriteLine(process_to_run + "...Failed. ERROR: " + ep.Message); 
} 
+1

Возможный дубликат: http://stackoverflow.com/questions/4587415/how-to-capture-shell-command-output-in-c – qJake

ответ

2

Вы можете redirect the standard error, а затем проанализировать это, чтобы определить, была ли ошибка.

// Start the child process. 
Process p = new Process(); 
// Redirect the error stream of the child process. 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardError = true; 
p.StartInfo.FileName = "Write500Lines.exe"; 
p.Start(); 
// Do not wait for the child process to exit before 
// reading to the end of its redirected error stream. 
// p.WaitForExit(); 
// Read the error stream first and then wait. 
string error = p.StandardError.ReadToEnd(); 
p.WaitForExit(); 
Смежные вопросы