Trong phần này chúng ta sẽ xem cách sử dụng fork() để tạo tiến trình con (child process) trong C++. Chúng ta cũng thực hiện một số tính toán trong mỗi tiến trình. Vì vậy, trong tiến trình cha (parent process) chúng ta sẽ tìm tổng các số chẵn của một mảng, và bên trong tiến trình con (child process) chúng ta sẽ đếm tổng các số lẻ từ các phần tử mảng.
Khi fork() được gọi, nó trả về một giá trị. Nếu giá trị lớn hơn 0, thì hiện tại đang ở tiến trình cha, ngược lại là tiến trình con. Vì vậy, sử dụng điều này ta có thể phân biệt giữa các tiến trình.
Mã ví dụ
#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(); // chia tiến trình
if (n > 0) { // khi n không phải 0, là tiến trình cha
for (int i : a) {
if (i % 2 == 0)
even_sum = even_sum + i;
}
cout << "Tiến trình cha" << endl;
cout << "Tổng số chẵn: " << even_sum << endl;
} else { // khi n là 0, là tiến trình con
for (int i : a) {
if (i % 2 != 0)
odd_sum = odd_sum + i;
}
cout << "Tiến trình con" << endl;
cout << "Tổng số lẻ: " << odd_sum << endl;
}
return 0;
}
Kết quả đầu ra
Tiến trình cha Tổng số chẵn: 56 Tiến trình con Tổng số lẻ: 64