操作系统概念第七版习题 3.10 代码详解
时间: 2023-06-24 12:07:29 浏览: 86
操作系统概念第七版习题 3.10 代码详解
题目描述:
编写一个 C 程序,使用 fork() 系统调用创建一个新进程。输出 “hello” 来自父进程, 输出 “world” 来自子进程。你应该尝试让父进程先输出。
代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork failed!\n");
exit(1);
} else if (pid == 0) {
printf("world\n");
} else {
wait(NULL);
printf("hello\n");
}
return 0;
}
```
代码分析:
首先通过 `pid_t pid` 定义一个变量来保存 fork() 调用的返回值,然后调用 fork() 创建新的进程。
当 fork() 返回值小于 0 时,表示创建进程失败,程序将会退出。
当 fork() 返回值等于 0 时,表示当前正在执行子进程代码,输出 "world"。
当 fork() 返回值大于 0 时,表示当前正在执行父进程代码,调用 `wait(NULL)` 等待子进程结束,输出 "hello"。
最后,程序返回 0。
输出结果:
```
hello
world
```