父进程从终端读取要执行的命令,并交给子进程执行。父进程等待子进程结束,并打印子进程的返回值。 提示:从终端读取要执行的命令可用fgets()实
时间: 2024-05-07 14:20:33 浏览: 103
现在我给你提供一个基本的实现思路:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
char cmd[100];
pid_t pid;
int status;
while (1) {
printf("Please enter the command to execute: ");
fgets(cmd, 100, stdin);
// 如果输入的是 exit,则退出程序
if (strcmp(cmd, "exit\n") == 0) {
printf("Program is exiting...\n");
break;
}
// 创建子进程
pid = fork();
if (pid < 0) {
printf("Failed to create child process.");
exit(1);
} else if (pid == 0) {
// 子进程执行命令
system(cmd);
exit(0);
} else {
// 父进程等待子进程结束,并打印子进程的返回值
wait(&status);
printf("Child process returned with status: %d\n", status);
}
}
return 0;
}
```
这个程序会循环询问用户要执行的命令,如果输入的是 exit,则退出程序。接着,程序会创建一个子进程,子进程使用 `system()` 函数执行用户输入的命令。父进程会等待子进程结束,并打印子进程的返回值。
阅读全文