이 섹션에서는 fork()를 사용하여 C++에서 자식 프로세스를 만드는 방법을 살펴봅니다. 우리는 또한 각 프로세스에 약간의 계산을 수행합니다. 따라서 부모 프로세스에서는 배열의 모든 짝수의 합계를 찾고 자식 프로세스에서는 배열 요소의 홀수 합계를 계산합니다.
fork()가 호출되면 값을 반환합니다. 값이 0보다 크면 현재 상위 프로세스에 있고 그렇지 않으면 하위 프로세스에 있습니다. 따라서 이를 사용하여 프로세스를 구분할 수 있습니다.
예시 코드
#include <iostream> #include <unistd.h> using namespace std; int main() { int a[15] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 , 11, 12, 13, 14, 15}; int odd_sum = 0, even_sum = 0, n, i; n = fork(); //subdivide process if (n > 0) { //when n is not 0, then it is parent process for (int i : a) { if (i % 2 == 0) even_sum = even_sum + i; } cout << "Parent process " << endl; cout << "Sum of even numbers: " << even_sum << endl; } else { //when n is 0, then it is child process for (int i : a) { if (i % 2 != 0) odd_sum = odd_sum + i; } cout << "Child process " <<endl; cout << "Sum of odd numbers: " << odd_sum << endl; } return 0; }
출력
Parent process Sum of even numbers: 56 Child process Sum of odd numbers: 64