编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用exec()更换自己的执行代码,新的代码显示“new program.”后,调用exit()结束。父进程则调用waitpid()等待子进程结束,并在子进程结束后,显示子进程的标识符然后正常结束
时间: 2023-05-22 17:05:39 浏览: 102
举例讲解C语言的fork()函数创建子进程的用法
这是一个简单的 C 语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main(void) {
pid_t pid = fork();
if (pid == -1) {
perror("failed to fork");
return EXIT_FAILURE;
} else if (pid == 0) {
printf("new program.\n");
execl("/bin/echo", "echo", "new program.", NULL);
perror("failed to execute");
return EXIT_FAILURE;
} else {
int status;
waitpid(pid, &status, 0);
printf("child process %d finished.\n", pid);
return EXIT_SUCCESS;
}
}
```
这个程序首先调用 `fork()` 创建一个子进程,然后在子进程中使用 `execl()` 调用 `/bin/echo` 程序来输出信息,并在输出后调用 `exit()` 结束子进程。在父进程中,调用 `waitpid()` 等待子进程结束,并显示子进程的标识符。
阅读全文