在Linux中,可以使用fork()
和exec()
系统调用来创建一个Bash子进程
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork(); // 创建子进程
if (pid == 0) { // 子进程
char *argv[] = {"bash", "-c", "echo 'Hello from the child process!'", NULL};
execvp(argv[0], argv); // 在子进程中执行Bash命令
perror("execvp"); // 如果execvp()失败,打印错误信息
exit(EXIT_FAILURE); // 退出子进程
} else if (pid > 0) { // 父进程
int status;
waitpid(pid, &status, 0); // 等待子进程完成
printf("Child process finished with status %d\n", WEXITSTATUS(status));
} else { // fork()失败
perror("fork"); // 打印错误信息
exit(EXIT_FAILURE); // 退出父进程
}
return 0;
}
gcc -o create_child_process create_child_process.c
./create_child_process
这个程序将创建一个子进程,并在其中执行echo 'Hello from the child process!'
命令。父进程将等待子进程完成,并打印子进程的退出状态。