编写C语言程序fork6-9.c,完成以下功能:父进程创建子进程, 子进程完成两个功能1)把shell命令“ls -l /bin”命令的执行结果显示出来,2)调用shell程序add6-9.sh,睡眠3秒,退出,然后父进程等子进程退出后,输出“child is over”。shell程序add6-9.sh是输出1+2+..+1202的总和。
时间: 2024-03-21 11:39:04 浏览: 58
下面是一个符合要求的C语言程序,实现了创建子进程,子进程执行shell命令和调用shell程序的功能。
```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 == -1) { // 创建进程失败
printf("Failed to create child process!\n");
return 1;
}
if (pid == 0) { // 子进程
printf("Child process is running...\n");
// 执行shell命令
system("ls -l /bin");
// 调用shell程序
system("./add6-9.sh");
printf("Child process is finished!\n");
exit(0); // 退出子进程
} else { // 父进程
printf("Parent process is running...\n");
waitpid(pid, &status, 0); // 等待子进程结束
printf("Child is over.\n");
}
return 0;
}
```
在子进程中,我们使用了`system()`函数来执行shell命令和调用shell程序。`system()`函数会调用shell进程来执行命令,返回值为命令的退出状态码。在本程序中,我们没有使用返回值,因此可以忽略。在shell程序中,我们使用了`sleep()`函数来使程序休眠3秒。
您需要将上述代码保存为fork6-9.c文件,并将add6-9.sh文件放在同一目录下,然后通过编译器编译运行即可。
阅读全文