#include<stdio.h> main() { int p1p2; while((p1=fork())==-1); if(p1==0) putchar('b'); else while((p2=fork())==-1); if(p2==0) putchar('c'); else putchar('a'); } } 编写程序,每一个进程循环10次 ,显示一句话。子进程显示'daughteri’及' soni’,父进程显示'parenti’,记录结果,分析原因。
时间: 2024-03-14 13:46:52 浏览: 56
这段代码存在多个语法错误,无法编译。我假设您是想要编写一个程序,其中有一个父进程和两个子进程,每个进程都循环10次并显示一些内容。以下是一个可能的解决方案:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
int pid1, pid2;
int i;
// 创建第一个子进程
pid1 = fork();
if (pid1 < 0) {
perror("fork");
exit(1);
} else if (pid1 == 0) {
// 子进程1循环10次并显示内容
for (i = 0; i < 10; i++) {
printf("daughter%d\n", i);
}
exit(0);
}
// 父进程创建第二个子进程
pid2 = fork();
if (pid2 < 0) {
perror("fork");
exit(1);
} else if (pid2 == 0) {
// 子进程2循环10次并显示内容
for (i = 0; i < 10; i++) {
printf("son%d\n", i);
}
exit(0);
}
// 父进程循环10次并显示内容
for (i = 0; i < 10; i++) {
printf("parent%d\n", i);
}
// 等待两个子进程结束
waitpid(pid1, NULL, 0);
waitpid(pid2, NULL, 0);
return 0;
}
```
该程序创建了一个父进程和两个子进程。每个进程循环10次并显示一些内容。父进程显示"parenti",子进程1显示"daughteri",子进程2显示"soni"。程序使用了fork()系统调用创建子进程,并使用waitpid()等待子进程结束,以确保子进程可以正确退出。
阅读全文