>  기사  >  백엔드 개발  >  C에서 ::CreateProcess를 사용하여 Windows 실행 파일을 시작하고 관리하는 방법은 무엇입니까?

C에서 ::CreateProcess를 사용하여 Windows 실행 파일을 시작하고 관리하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 13:02:29276검색

How to Launch and Manage Windows Executables with ::CreateProcess in C  ?

C에서 Windows 실행 파일을 시작하고 관리하기 위해 ::CreateProcess 호출

이 문서에서는 C에서 ::CreateProcess 함수를 활용하는 방법을 보여줍니다. Windows 실행 파일을 시작하고, 완료될 때까지 기다리고, 종료를 올바르게 처리합니다.

실행 파일 시작

::CreateProcess 함수는 실행 파일 경로를 포함한 여러 매개 변수를 허용합니다. 및 명령줄 인수. EXE를 실행하려면 경로 매개변수에 실행 파일 경로를 지정하십시오.

<code class="cpp">STARTUPINFO info = { sizeof(info) };
PROCESS_INFORMATION processInfo;

if (CreateProcess("C:\path\to\my.exe", NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) {
  // Executable successfully launched
} else {
  // Handle launch failure
}</code>

Waiting for Completion

실행 파일이 완료될 때까지 기다리려면 다음을 호출하세요. 다음을 기다릴 핸들로 processInfo.hProcess를 사용하는 WaitForSingleObject 함수:

<code class="cpp">WaitForSingleObject(processInfo.hProcess, INFINITE);</code>

이렇게 하면 프로세스가 종료될 때까지 현재 스레드가 차단됩니다.

프로세스 종료 처리

실행 파일이 완료된 후 프로세스와 스레드 핸들을 닫아 시스템 리소스를 적절하게 해제합니다.

<code class="cpp">CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);</code>

샘플 코드

모두 종합하면, 다음 코드는 EXE를 시작하고, 완료될 때까지 기다리고, 프로세스 종료를 처리하는 방법을 보여줍니다.

<code class="cpp">STARTUPINFO info = { sizeof(info) };
PROCESS_INFORMATION processInfo;

if (CreateProcess("C:\path\to\my.exe", NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo)) {
  WaitForSingleObject(processInfo.hProcess, INFINITE);
  CloseHandle(processInfo.hProcess);
  CloseHandle(processInfo.hThread);
}</code>

이 코드는 지정된 EXE를 시작하고, 완료될 때까지 기다린 다음 모든 핸들을 올바르게 닫습니다. 적절한 정리 및 리소스 할당 해제를 보장합니다.

위 내용은 C에서 ::CreateProcess를 사용하여 Windows 실행 파일을 시작하고 관리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.