1)编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中 有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符’a’;子进程分别显示字符’b’和’c’。观察屏幕上的显示结果,并分析原因。
时间: 2024-05-13 21:20:53 浏览: 77
举例讲解C语言的fork()函数创建子进程的用法
代码如下:
```
#include <unistd.h>
#include <stdio.h>
int main() {
pid_t pid1, pid2;
pid1 = fork();
if (pid1 < 0) {
printf("fork error\n");
} else if (pid1 == 0) {
printf("c");
} else {
pid2 = fork();
if (pid2 < 0) {
printf("fork error\n");
} else if (pid2 == 0) {
printf("b");
} else {
printf("a");
}
}
return 0;
}
```
运行结果:
```
bac
```
分析:在程序运行时,调用fork()函数创建了两个子进程。第一个子进程(pid1)在else if (pid1 == 0)的分支中执行,输出字符'c'。第二个子进程(pid2)在else if (pid2 == 0)的分支中执行,输出字符'b'。父进程在else分支中执行,输出字符'a'。由于进程的执行顺序是不确定的,所以输出结果的顺序也是不确定的。但由于子进程和父进程的执行是并行的,所以它们的输出结果可能是交替的,即父进程输出'a',然后子进程1输出'c',子进程2输出'b',最后输出结果为'bac'。
阅读全文