修改版本 0 内核,使每次进程创建时都输出父子进程的进程号,使每次执行可执行文件时,都输出可执行文件的名字和当前进程号。具体格式为: Fork 1->2 表示 1 号进程创建了 2 号进程 Exec /bin/sh(2) 表示 2 号进程执行了可执行文件/bin/sh
时间: 2024-02-25 16:52:09 浏览: 41
下面是修改后的示例代码,可以实现每次进程创建和执行可执行文件时输出相应的信息:
```c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 子进程
printf("Fork %d->%d\n", getppid(), getpid());
char *args[] = {"/bin/sh", NULL};
execv(args[0], args);
printf("Failed to exec %s\n", args[0]);
exit(1);
} else if (pid > 0) {
// 父进程
wait(NULL);
} else {
// fork失败
printf("Failed to create child process.");
return -1;
}
printf("Exec /bin/sh(%d)\n", getpid());
return 0;
}
```
在这个示例中,使用了getppid()获取父进程的PID,使用getpid()获取当前进程的PID。在子进程中,使用了execv()函数执行了/bin/sh可执行文件,并在执行前输出了Fork信息,执行后输出了Exec信息。在父进程中,使用了wait()函数等待子进程的结束。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)