编写程序,用系统调用fork()创建两个子进程。父进程显示10次字符串“father”,子进程1显示10次字符串“son”,子进程2显示10次字符串“daughter”。要求用c语言写出完整程序
时间: 2023-06-04 19:05:11 浏览: 381
好的,我已经明白你的要求了。以下是完整的 C 语言程序代码:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
void print_str(char *str, int count) {
for (int i = 0; i < count; i++) {
printf("%s\n", str);
}
}
int main() {
int pid1, pid2;
pid1 = fork(); // 创建子进程1
if (pid1 < 0) { // 创建子进程1 失败
perror("Fork failed");
return 1;
} else if (pid1 == 0) { // 子进程1
print_str("son", 10);
return 0;
} else { // 父进程
pid2 = fork(); // 创建子进程2
if (pid2 < 0) { // 创建子进程2 失败
perror("Fork failed");
return 1;
} else if (pid2 == 0) { // 子进程2
print_str("daughter", 10);
return 0;
} else { // 父进程
print_str("father", 10);
wait(NULL); // 等待子进程1结束
wait(NULL); // 等待子进程2结束
return 0;
}
}
}
```
这个程序使用 `fork()` 系统调用创建了两个子进程:子进程1 和子进程2。父进程在创建完子进程后,显示10次字符串“father”,然后等待两个子进程结束。子进程1 显示10次字符串“son”,子进程2 显示10次字符串“daughter”。执行这个程序时,可能会得到下面的输出结果:
```
father
father
father
father
father
father
father
father
father
father
son
son
son
son
son
son
son
son
son
son
daughter
daughter
daughter
daughter
daughter
daughter
daughter
daughter
daughter
daughter
```
注意,这只是一种可能的输出结果,并不代表每次都是这样。因为在多进程程序中,进程的执行顺序不一定是固定的。