在C++中,可以使用POSIX标准的fork()
函数来创建新的进程。fork()
函数会创建一个与调用进程几乎完全相同的副本,这个副本被称为子进程。子进程会继承父进程的大部分属性,包括代码、数据、堆栈、文件描述符等。
fork()
函数创建的新进程。以下是一个简单的C++示例,展示如何在Linux下使用fork()
创建进程:
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
int main() {
pid_t pid = fork(); // 创建新进程
if (pid == -1) {
// fork失败
std::cerr << "Failed to create a new process." << std::endl;
return 1;
} else if (pid == 0) {
// 子进程
std::cout << "I am the child process, PID: " << getpid() << std::endl;
} else {
// 父进程
std::cout << "I am the parent process, PID: " << getpid() << ", Child PID: " << pid << std::endl;
}
return 0;
}
fork()
失败:fork()
之后,子进程和父进程几乎同时开始执行,具体哪个先执行取决于操作系统的调度。wait()
或waitpid()
函数让父进程等待子进程结束,以确保顺序执行。#include <sys/wait.h>
// 在父进程中
wait(NULL); // 等待任意子进程结束
通过以上方法,可以有效管理和控制进程的创建和执行,确保程序的稳定性和可靠性。