编写一个C 程序,使用系统调用fork()创建一个子进程,并使用这个子进程调用exec 函数族以执行系统命令ls。同时要求: ①在子进程中分别输出当前进程为子进程的提示、当前进程的PID 和父进程的PID、根据用户输入确定当前进程的返回值、退出提示等信息。 ②在父进程中分别输出当前进程为父进程的提示、当前进程的PID 和子进程的PID、等待子进程退出后获得的返回值、退出提示等信息。
时间: 2024-03-23 07:38:19 浏览: 80
举例讲解C语言的fork()函数创建子进程的用法
好的,以下是你需要的 C 代码:
```c
#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) {
fprintf(stderr, "Fork failed\n");
exit(1);
} else if (pid == 0) {
printf("This is the child process.\n");
printf("PID: %d\n", getpid());
printf("Parent PID: %d\n", getppid());
char *args[] = {"ls", NULL};
execvp(args[0], args);
printf("Child process complete.\n");
exit(0);
} else {
printf("This is the parent process.\n");
printf("PID: %d\n", getpid());
printf("Child PID: %d\n", pid);
wait(&status);
printf("Child exit status: %d\n", WEXITSTATUS(status));
printf("Parent process complete.\n");
}
return 0;
}
```
这个程序使用了 `fork()` 创建了一个子进程,然后在子进程中使用 `execvp()` 函数族执行了 `ls` 命令,最后父进程等待子进程退出并输出了子进程的退出状态。
注意:在实际应用中,应该对 `execvp()` 函数族的返回值进行错误检查。
阅读全文