在Linux中进行C++多进程编程,通常使用fork()系统调用创建新的进程。以下是一个简单的示例,展示了如何在C++中使用fork()创建子进程:
#include <iostream>
#include <unistd.h>
#include <sys/wait.h>
int main() {
    pid_t pid = fork(); // 创建子进程
    if (pid == -1) {
        std::cerr << "Error: fork failed" << std::endl;
        return 1;
    } else if (pid == 0) {
        // 子进程
        std::cout << "Hello from child process! My PID is: " << getpid() << std::endl;
    } else {
        // 父进程
        int status;
        waitpid(pid, &status, 0); // 等待子进程结束
        std::cout << "Hello from parent process! Child PID was: " << pid << std::endl;
    }
    return 0;
}
在这个示例中,我们首先调用fork()函数创建一个新的进程。fork()函数返回两次:一次在父进程中,返回子进程的PID;另一次在子进程中,返回0。通过检查fork()的返回值,我们可以确定当前代码是在父进程还是子进程中运行。
在子进程中,我们打印一条消息,包括子进程的PID。在父进程中,我们使用waitpid()函数等待子进程结束,然后打印一条消息,包括子进程的PID。
要编译并运行此示例,请将其保存为fork_example.cpp,然后在终端中执行以下命令:
g++ -o fork_example fork_example.cpp
./fork_example
这将输出类似以下内容:
Hello from child process! My PID is: 12345
Hello from parent process! Child PID was: 12345
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的进程间通信(IPC)机制,如管道、信号量、共享内存等。这些IPC机制可以帮助父进程和子进程之间传递数据和同步操作。