溫馨提示×

C++在Linux中如何進行多進程編程

小樊
48
2025-10-02 05:34:56
欄目: 編程語言

在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機制可以幫助父進程和子進程之間傳遞數據和同步操作。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女