cmd.exe에 ftp 명령을 입력하는 C# 프로그램을 만들었습니다. 출력을 읽고 콘솔에 표시합니다. 문제는 Console.WriteLine (srFTP.ReadToEnd())의 출력을 읽을 때 멈추는 것입니다. 디버거는 오류를 표시하지 않습니다. 그것은 단순히 붙어 있습니다. 각 줄에 console.writelines를 두어 보았습니다. 그리고 그 지점에서 멈추었다는 것을 증명했습니다. 도움? 스트림 끝에라도 유용 영구적으로 될 때까지cmd.exe 출력을 C 프로그램으로 리디렉션 할 수 없습니다.
public static void CheckKVSConnect()
{
Process KVSFTP = new Process();
KVSFTP.StartInfo.FileName = "cmd.exe";
KVSFTP.StartInfo.Arguments = "disable";
KVSFTP.StartInfo.UseShellExecute = false;
KVSFTP.StartInfo.RedirectStandardOutput = true;
KVSFTP.StartInfo.RedirectStandardInput = true;
KVSFTP.StartInfo.RedirectStandardError = true;
KVSFTP.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
KVSFTP.Start();
StreamWriter swFTP = KVSFTP.StandardInput;
swFTP.WriteLine("ftp");
swFTP.WriteLine("open aaaaaa.org");
swFTP.WriteLine("username");
swFTP.WriteLine("password");
StreamReader srFTP = KVSFTP.StandardOutput;
Console.WriteLine(srFTP.ReadToEnd());
Console.WriteLine("DONE");
}
오류가 발생하면 프로그램에 데드락이 발생하므로 stderr를 읽지 않습니다. –