리눅스에서 프로세스를 생성하고 관리하는 것은 C++로도 가능합니다. 이번 포스트에서는 C++를 사용하여 리눅스에서 프로세스를 생성하고 제어하는 방법을 살펴보겠습니다.
프로세스 생성하기
새로운 프로세스를 만들기 위해서는 fork()
함수를 사용합니다. 이 함수는 현재의 프로세스를 복제하여 새로운 프로세스를 만듭니다.
다음은 간단한 C++ 코드 예제입니다.
#include <iostream>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 자식 프로세스 코드
std::cout << "자식 프로세스" << std::endl;
} else if (pid > 0) {
// 부모 프로세스 코드
std::cout << "부모 프로세스" << std::endl;
} else {
// 에러 처리
std::cerr << "프로세스 생성 실패" << std::endl;
return 1;
}
return 0;
}
위 코드는 fork()
함수를 사용하여 새로운 프로세스를 생성하고, 부모 프로세스와 자식 프로세스 각각에서 메시지를 출력합니다.
프로세스 제어하기
새로운 프로세스를 생성했다면, 이제 해당 프로세스를 제어할 수 있습니다. 예를 들어, exec()
계열의 함수를 사용하여 새로운 프로그램을 실행하거나, kill()
함수를 사용하여 프로세스를 종료할 수 있습니다.
다음은 exec()
함수를 사용하여 새로운 프로그램을 실행하는 예제입니다.
#include <iostream>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 자식 프로세스 코드
char *args[] = {"/bin/ls", "-l", NULL};
execvp(args[0], args);
} else if (pid > 0) {
// 부모 프로세스 코드
std::cout << "부모 프로세스" << std::endl;
} else {
// 에러 처리
std::cerr << "프로세스 생성 실패" << std::endl;
return 1;
}
return 0;
}
위 코드는 execvp()
함수를 사용하여 /bin/ls -l
명령어를 실행하는 예제입니다.
프로세스를 종료하려면 kill()
함수를 사용할 수 있습니다. 예를 들어, 다음은 특정 프로세스를 종료하는 코드 예제 입니다.
#include <iostream>
#include <signal.h>
int main() {
// 프로세스 ID 입력
int pid;
std::cout << "종료할 프로세스 ID를 입력하세요: ";
std::cin >> pid;
// 프로세스 종료
if (kill(pid, SIGKILL) == 0) {
std::cout << "프로세스를 종료했습니다." << std::endl;
} else {
std::cerr << "프로세스 종료 실패" << std::endl;
}
return 0;
}
위 코드는 kill()
함수를 사용하여 입력받은 프로세스 ID에 해당하는 프로세스를 종료하는 예제입니다.
요약
C++를 사용하여 리눅스에서 프로세스를 생성하고 제어하는 방법을 살펴보았습니다. fork()
함수를 사용하여 새로운 프로세스를 생성하고, exec()
함수와 kill()
함수를 사용하여 프로세스를 실행하거나 종료할 수 있습니다.
프로세스 관리 및 제어에 대한 더 많은 정보는 리눅스 맨 페이지를 참조할 수 있습니다.
이상으로 C++로 리눅스 프로세스 관리 및 제어에 대한 간략한 소개를 마치겠습니다. 감사합니다.