4.编制程序,利用系统调用fork()创建两个子进程。程序运行时,系统中有一个父 进程和两个子进程活动,分别让他们显示“A”、“B”和“C”,分析程序运行结果。父进程等孩子全部退出后再退出
时间: 2023-12-25 12:06:37 浏览: 66
举例讲解C语言的fork()函数创建子进程的用法
下面是使用fork()系统调用创建两个子进程,让它们显示"A"、"B"和"C"的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid1, pid2;
int status1, status2;
pid1 = fork(); // 创建第一个子进程
if (pid1 < 0) {
fprintf(stderr, "fork failed\n");
exit(1);
} else if (pid1 == 0) {
printf("A\n");
exit(0);
}
pid2 = fork(); // 创建第二个子进程
if (pid2 < 0) {
fprintf(stderr, "fork failed\n");
exit(1);
} else if (pid2 == 0) {
printf("B\n");
exit(0);
}
// 等待两个子进程退出
waitpid(pid1, &status1, 0);
waitpid(pid2, &status2, 0);
printf("C\n");
return 0;
}
```
程序运行时,首先会创建第一个子进程,它会打印"A",然后退出。接着程序创建第二个子进程,它会打印"B",然后退出。最后,父进程等待两个子进程退出后,打印"C",然后退出。
程序的运行结果可能是:
```
A
B
C
```
也有可能是:
```
B
A
C
```
这取决于操作系统如何调度进程的执行顺序。但无论如何,最终的输出结果都是"A"、"B"和"C",且它们的顺序是不确定的。
阅读全文