[C#] Run console program with Process.Start

김정환(John.Kim)
OldbeeDev
Published in
3 min readFeb 13, 2020
Image by Gerd Altmann from Pixabay

C#에서 외부 프로그램을 실행시키는 방법은 간단합니다.

string ftpClient = "C:\\Program Files (x86)\\WinSCP\\WinSCP.exe";
Process.Start(ftpClient);

외부 프로그램이 Console 프로그램이라도 방법은 같습니다.

string path = @"C:\Samples\snmp_trapd\snmptrapd.exe";
Process.Start(path);

그런데 이 외부 프로그램은 SNMP trap daemon 이라서 계속 running 상태여야 하는데, 위와 같이 CMD창으로 띄워 놓으면 실수로 닫기가 쉽습니다. 이럴 때 아래와 같이 WindowStyle 속성을 Hidden으로 지정해서 Start하면 CMD 창이 안보이게 띄울 수 있습니다.

만약 MainWindow를 종료할 때 SNMP trap daemon도 함께 종료시키고 싶으면 다음과 같이 Process.Kill() 메소드를 사용합니다.

최근에는 프로그램에서 xcopy를 실행해야 하는 상황도 있었습니다. 당연히 Hidden으로 실행을 시켰습니다만, xcopy가 언제 종료되는지 모른다는 문제가 생겼습니다. 이럴 때는 다음과 같이 Process.WaitForExit() 메소드를 사용해야 합니다.

위의 XCopy() 메소드를 호출하는 방법은 아래와 같습니다.

string srcPath = @"C:\Samples\snmp_trapd";
string dstPath = @"C:\Samples\snmp_trapd_backup";
if (XCopy(srcPath, dstPath))
{
MessageBox.Show("success");
}
else
{
MessageBox.Show("fail");
}

snmp_trapd 디렉토리 및 하위 디렉토리의 모든 파일들이 snmp_trapd_backup 디렉토리로 복사되고 나면 “success” 팝업이 뜹니다.

끝! :)

References

--

--