编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”
时间: 2023-04-25 16:00:15 浏览: 89
下面是一段实现上述功能的源程序:
```
#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid1, pid2;
pid1 = fork(); // 创建第一个子进程
if (pid1 < 0) {
printf("Error: fork() failed.\n");
return -1;
} else if (pid1 == 0) {
// 子进程1
printf("b\n");
} else {
// 父进程
pid2 = fork(); // 创建第二个子进程
if (pid2 < 0) {
printf("Error: fork() failed.\n");
return -1;
} else if (pid2 == 0) {
// 子进程2
printf("c\n");
} else {
// 父进程
printf("a\n");
}
}
return 0;
}
```
在这段程序中,我们首先调用`fork()`函数创建第一个子进程,并判断是否创建成功。如果创建成功,我们就在子进程1中输出字符“b”,在父进程中继续创建第二个子进程。如果创建失败,我们就输出错误信息并退出程序。
在创建第二个子进程时,我们同样调用`fork()`函数,并判断是否创建成功。如果创建成功,我们就在子进程2中输出字符“c”,在父进程中输出字符“a”。如果创建失败,我们就输出错误信息并退出程序。
这样,当我们运行这个程序时,就会在系统中创建一个父进程和两个子进程,每个进程都会在屏幕上输出一个字符。输出的顺序可能会有所不同,因为进程的执行顺序是不确定的。