在C++中创建进程通常使用fork()
函数来创建一个子进程,然后可以使用exec()
系列函数来执行另一个程序。以下是一个简单的示例:
#include <iostream>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid < 0) {
std::cerr << "Error creating child process." << std::endl;
return 1;
} else if (pid == 0) {
// Child process
execl("/bin/ls", "ls", "-l", NULL);
} else {
// Parent process
wait(NULL);
std::cout << "Child process completed." << std::endl;
}
return 0;
}
在这个示例中,fork()
函数将创建一个子进程,并返回子进程的PID。如果fork()
返回值小于0,则表示创建进程失败。如果返回值为0,则表示当前进程是子进程,可以使用execl()
函数来执行/bin/ls
命令。如果返回值大于0,则表示当前进程是父进程,它会等待子进程执行完毕后输出一条消息。
需要注意的是,fork()
函数在父进程和子进程中返回的值是不同的,因此通过判断返回值来区分父进程和子进程。同时,在子进程中使用execl()
函数来执行另一个程序时,需要指定要执行的程序路径和参数列表。