Linux 设计两个程序,分别求三边形面积和圆面积,再设计一个程序,该程序中需要创建两个子进程,两个子进程分别执行以上两个程序,两个子进程分先后执行,子进程执行完后,父进程输出相关提示信息
时间: 2023-12-04 08:03:29 浏览: 75
以下是实现该需求的示例代码:
triangle.c:
```c
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c;
float p, area;
printf("请输入三角形三边长:");
scanf("%f%f%f", &a, &b, &c);
p = (a + b + c) / 2;
area = sqrt(p * (p - a) * (p - b) * (p - c));
printf("三角形面积为:%f\n", area);
return 0;
}
```
circle.c:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.1415926535
int main() {
float r;
float area;
printf("请输入圆的半径:");
scanf("%f", &r);
area = PI * r * r;
printf("圆的面积为:%f\n", area);
return 0;
}
```
main.c:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
int pid1, pid2;
int status;
pid1 = fork();
if (pid1 < 0) {
perror("fork error");
exit(1);
} else if (pid1 == 0) {
// 子进程1,执行 triangle.c
execl("./triangle", "triangle", NULL);
perror("execl error");
exit(1);
}
pid2 = fork();
if (pid2 < 0) {
perror("fork error");
exit(1);
} else if (pid2 == 0) {
// 子进程2,执行 circle.c
execl("./circle", "circle", NULL);
perror("execl error");
exit(1);
}
// 等待子进程1结束
waitpid(pid1, &status, 0);
printf("三角形面积计算完成\n");
// 等待子进程2结束
waitpid(pid2, &status, 0);
printf("圆的面积计算完成\n");
printf("所有计算完成\n");
return 0;
}
```
编译:
```
gcc triangle.c -o triangle
gcc circle.c -o circle
gcc main.c -o main
```
运行:
```
./main
```
运行结果示例:
```
请输入三角形三边长:3 4 5
三角形面积为:6.000000
请输入圆的半径:5
圆的面积为:78.539818
三角形面积计算完成
圆的面积计算完成
所有计算完成
```
阅读全文