编写程序,实现在程序运行时通过系统调用fork( )创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“I am father”,儿子进程执行时屏幕显示“I am son”,女儿进程执行时屏幕显示“I am daughter”。规定父进程必须等待子进程结束才显示信息。
时间: 2024-10-10 08:11:28 浏览: 33
为了实现这个程序,你可以使用C语言中的`fork()`函数以及一些基本的条件控制结构,如`if-else`和循环。这里是一个简单的示例:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#define NUM_DAUGHTERS 1 // 修改此值以增加女儿进程的数量
int main() {
pid_t child_pid; // 存储子进程ID
for (int i = 0; i <= NUM_DAUGHTERS; i++) { // 创建子进程
if (i == 0) {
// 父亲进程
printf("I am father\n");
} else if (i % 2 == 0) {
// 儿子进程
child_pid = fork();
if (child_pid == 0) {
printf("I am son\n");
exit(0); // 结束子进程
}
} else {
// 女儿进程
child_pid = fork();
if (child_pid == 0) {
printf("I am daughter\n");
exit(0); // 结束子进程
}
}
// 父进程等待所有子进程完成
if (wait(NULL) == -1) {
perror("Error waiting for child");
exit(EXIT_FAILURE);
}
}
return 0;
}
```
在这个例子中,`fork()`函数用于创建子进程。当进程id为0时,它代表的是新创建的子进程;如果进程id大于0,则代表的是父进程。`wait()`函数用于等待子进程结束,这样父进程才会继续执行。
注意:`NUM_DAUGHTERS`变量可以调整以控制有多少个女儿进程。本示例假设只有一个女儿进程,如果你需要更多,只需将该数值相应地增加即可。
阅读全文