)编写一段名为ex1-02.c的源程序,使用系统调用fork()创建两个子进程p1和p2。p1的功能为显示字符'b',p2的功能为显示字符'c',父进程的功能为显示字符'a',父进程和两个子进程并发运行。不停的运行ex02,观察并记录屏幕上的显示结果。
时间: 2024-12-10 08:47:51 浏览: 9
要在Linux环境下编写一个名为`ex1-02.c`的源程序,你可以使用C语言,结合标准库函数`fork()`、`printf()`和`wait()`来实现这个需求。下面是一个简单的示例:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#define CHAR_A 'a'
#define CHAR_B 'b'
#define CHAR_C 'c'
int main() {
pid_t pid; // 子进程ID
// 创建第一个子进程p1
if ((pid = fork()) == 0) { // 子进程
printf("子进程 p1: %c\n", CHAR_B);
exit(0); // 结束子进程
} else if (pid > 0) { // 父进程
// 创建第二个子进程p2
if ((pid = fork()) == 0) { // 子进程p2
printf("子进程 p2: %c\n", CHAR_C);
exit(0); // 结束子进程
}
// 等待子进程p1完成
wait(NULL);
printf("父进程: %c\n", CHAR_A);
// 等待子进程p2完成
wait(NULL);
}
return 0;
}
```
在这个程序中,首先创建一个子进程p1,它打印字符'b';然后父进程继续执行,创建另一个子进程p2,打印字符'c'。接着父进程等待子进程p1结束,并打印字符'a'。最后,父进程再次调用`wait()`等待子进程p2结束。
当你运行这个程序时,可能会看到类似以下的结果(实际输出顺序取决于系统的调度),因为子进程并发运行:
```
子进程 p1: b
父进程: a
子进程 p2: c
```
或者反过来,这取决于系统对进程调度的处理。
阅读全文