3、编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用exec()更换自己的执行代码,新的代码显示“new program.”后,调用exit()结束。父进程则调用waitpid()等待子进程结束,并在子进程结束后,显示子进程的标识符然后正常结束。
时间: 2024-05-11 13:14:47 浏览: 87
好的,这是一个关于编程的问题,非常适合我回答。下面是代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid;
int status;
pid = fork(); // 创建子进程
if (pid < 0) { // 创建子进程失败
printf("Failed to create child process.\n");
exit(1);
}
else if (pid == 0) { // 子进程
printf("Child process created, pid = %d.\n", getpid());
execl("/bin/echo", "echo", "new program.", NULL); // 更换执行代码
exit(0); // 结束子进程
}
else { // 父进程
waitpid(pid, &status, 0); // 等待子进程结束
printf("Child process %d ended.\n", pid);
}
return 0;
}
```
当您运行这段代码时,它会创建一个子进程并更换执行代码,新代码会输出“new program.”。然后,父进程会等待子进程结束并显示子进程的标识符,最后正常结束。希望这个回答能够帮到您。
阅读全文