一、设计两个程序,分别求三边形面积和圆面积,-|||-再设计一个程序,该程序中需要创建两个子进程,-|||-两个子进程分别执行以上两个程序,子进程执行完-|||-后,父进程输出相关提示信息(或用线程解决本问-|||-题)。用Linux
时间: 2024-06-18 15:03:11 浏览: 61
好的,针对您的问题,我可以给您提供以下回答:
首先,我们需要分别编写求三角形面积和圆面积的两个程序。
求三角形面积的程序:
```
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, s, area;
printf("请输入三角形三边长度:\n");
scanf("%f%f%f", &a, &b, &c);
s = (a + b + c) / 2;
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("三角形面积为:%f\n", area);
return 0;
}
```
求圆面积的程序:
```
#include <stdio.h>
#include <math.h>
int main()
{
float r, area;
printf("请输入圆的半径:\n");
scanf("%f", &r);
area = 3.14 * r * r;
printf("圆面积为:%f\n", area);
return 0;
}
```
接下来,我们需要编写一个程序来创建两个子进程,并分别执行上述两个程序。然后,父进程输出相关提示信息。
程序如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
int pid1, pid2, status;
pid1 = fork(); // 创建第一个子进程
if (pid1 == 0) {
// 第一个子进程执行求三角形面积的程序
execl("./triangle", "triangle", NULL);
exit(0);
}
pid2 = fork(); // 创建第二个子进程
if (pid2 == 0) {
// 第二个子进程执行求圆面积的程序
execl("./circle", "circle", NULL);
exit(0);
}
// 等待子进程结束
waitpid(pid1, &status, 0);
waitpid(pid2, &status, 0);
printf("两个子进程执行完毕!\n");
return 0;
}
```
注意:上述程序中使用了`execl`函数来执行子进程中的程序。该函数会将当前进程替换为新的进程。因此,在使用该函数时,需要保证当前进程中的数据都已经保存或者已经提交,否则数据会丢失。
阅读全文