📅  最后修改于: 2023-12-03 15:36:35.593000             🧑  作者: Mango
在Linux系统中,使用fork()函数可以创建一个新进程,新进程和原进程几乎是一模一样的。在新进程中可以运行需要的程序,以达到多任务的效果。在这里我们将演示如何使用fork()函数在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) {
// 子进程
} else {
// 父进程
}
exit(0);
}
在父进程中,fork()函数返回的是新创建的子进程的进程ID(PID),而在子进程中,返回的是0。如果出现错误,fork()函数返回负数。在上述代码中,我们使用了一个if-else语句来判断pid的值,进而在父进程和子进程中分别运行不同的代码。
在子进程中,我们可以进行加法计算。代码如下:
#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的值。
在父进程中,我们可以进行减法计算。代码如下:
#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的值。
我们可以再次使用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个过程中进行了多次计算。