📜  使用fork()在4个过程中进行多次计算(1)

📅  最后修改于: 2023-12-03 15:36:35.593000             🧑  作者: Mango

使用fork()在4个过程中进行多次计算

在Linux系统中,使用fork()函数可以创建一个新进程,新进程和原进程几乎是一模一样的。在新进程中可以运行需要的程序,以达到多任务的效果。在这里我们将演示如何使用fork()函数在4个过程中进行多次计算。

1. 创建子进程

我们首先使用fork()函数创建子进程,代码如下:

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 
{ 
    pid_t pid; 
    
    pid = fork(); 
    if (pid < 0) { 
        fprintf(stderr, "fork failed"); 
        exit(-1); 
    } else if (pid == 0) { 
        // 子进程
    } else { 
        // 父进程
    } 
    exit(0); 
} 

在父进程中,fork()函数返回的是新创建的子进程的进程ID(PID),而在子进程中,返回的是0。如果出现错误,fork()函数返回负数。在上述代码中,我们使用了一个if-else语句来判断pid的值,进而在父进程和子进程中分别运行不同的代码。

2. 进行加法计算

在子进程中,我们可以进行加法计算。代码如下:

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 
{ 
    pid_t pid; 
    
    pid = fork(); 
    if (pid < 0) { 
        fprintf(stderr, "fork failed"); 
        exit(-1); 
    } else if (pid == 0) { // 子进程
        int a = 1, b = 2;
        int sum = a + b;
        printf("The sum of %d and %d is %d\n", a, b, sum);
    } else { // 父进程
    } 
    exit(0); 
} 

在这段代码中,我们定义了两个整形变量a和b,并将它们相加得到sum的值。最后使用printf()函数输出sum的值。

3. 进行减法计算

在父进程中,我们可以进行减法计算。代码如下:

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 
{ 
    pid_t pid; 
    
    pid = fork(); 
    if (pid < 0) { 
        fprintf(stderr, "fork failed"); 
        exit(-1); 
    } else if (pid == 0) { // 子进程
        int a = 1, b = 2;
        int sum = a + b;
        printf("The sum of %d and %d is %d\n", a, b, sum);
    } else { // 父进程
        int a = 5, b = 3;
        int sub = a - b;
        printf("The subtraction of %d and %d is %d\n", a, b, sub);
    } 
    exit(0); 
} 

在这段代码中,我们定义了两个整形变量a和b,并将它们相减得到sub的值。最后使用printf()函数输出sub的值。

4. 进行乘法计算和除法计算

我们可以再次使用fork()函数创建子进程,在其中进行乘法和除法计算。代码如下:

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 
{ 
    pid_t pid; 
    
    pid = fork(); 
    if (pid < 0) { 
        fprintf(stderr, "fork failed"); 
        exit(-1); 
    } else if (pid == 0) { // 子进程1
        int a = 2, b = 3;
        int product = a * b;
        printf("The product of %d and %d is %d\n", a, b, product);
    } else { // 父进程
        pid_t pid2;

        pid2 = fork();
        if (pid2 < 0) {
            fprintf(stderr, "fork failed");
            exit(-1);
        } else if (pid2 == 0) { // 子进程2
            int a = 6, b = 3;
            int quotient = a / b;
            printf("The quotient of %d and %d is %d\n", a, b, quotient);
        } else { // 父进程
        }
    } 
    exit(0); 
} 

在这段代码中,我们先创建了一个子进程1,并在其中进行了乘法计算,最后使用printf()函数输出结果。接着,我们在父进程中创建了另一个子进程2,并在其中进行了除法计算,最后同样使用printf()函数输出结果。

这样,我们就使用fork()函数在4个过程中进行了多次计算。