如何编写一个程序,让父进程创建子进程,并在子进程中利用exec函数和system函数分别执行命令'dir -a'?
时间: 2024-10-19 09:10:24 浏览: 16
php外部执行命令函数用法小结
在Unix/Linux环境中,你可以使用fork()和exec()系统调用来实现这个功能。以下是使用C语言的一个简单示例:
```c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
// 创建子进程
pid_t child_pid = fork();
if (child_pid == 0) { // 如果这是子进程
// 切换工作目录到当前目录,以便执行dir -a命令
chdir("/");
// 使用execve替换当前进程的进程映像
// 执行dir -a命令
execve("dir", /* 要执行的命令数组 */ {"dir", "-a"}, /* 环境变量数组 */ NULL);
// 如果execve失败,直接打印错误信息并退出
perror("execve failed");
exit(EXIT_FAILURE);
} else if (child_pid > 0) { // 如果这是父进程
printf("Parent process created child with PID %d.\n", child_pid);
// 父进程不需要等待子进程结束,因为它是异步的
// waitpid(child_pid, NULL, 0); // 可选,如果需要等待子进程完成
} else { // fork失败
perror("Fork failed");
exit(EXIT_FAILURE);
}
return 0;
}
```
在这个程序中,`fork()`用于创建一个新的进程,然后在子进程中,我们首先切换到根目录(`/`),再通过`execve()`函数替换子进程的进程映射,使其运行指定的命令`dir -a`。
阅读全文