中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

進程間通信之CreatePipe怎么用

小億
105
2023-10-21 12:46:30
欄目: 編程語言

CreatePipe函數可以用來創建一個匿名的管道,用于進程間通信。下面是一個示例代碼,展示了如何使用CreatePipe函數創建管道并進行進程間通信:

#include <windows.h>
#include <iostream>

int main()
{
    HANDLE hReadPipe, hWritePipe;
    DWORD bytesRead, bytesWritten;
    char buffer[100];

    // 創建管道
    if (!CreatePipe(&hReadPipe, &hWritePipe, NULL, 0))
    {
        std::cout << "創建管道失敗!" << std::endl;
        return 1;
    }

    // 創建子進程
    STARTUPINFO si = { sizeof(STARTUPINFO) };
    PROCESS_INFORMATION pi;
    si.hStdError = hWritePipe;
    si.hStdOutput = hWritePipe;
    si.dwFlags |= STARTF_USESTDHANDLES;

    if (!CreateProcess(NULL, "子進程程序路徑", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
    {
        std::cout << "創建子進程失敗!" << std::endl;
        return 1;
    }

    // 等待子進程結束
    WaitForSingleObject(pi.hProcess, INFINITE);

    // 讀取子進程輸出
    if (ReadFile(hReadPipe, buffer, sizeof(buffer), &bytesRead, NULL))
    {
        buffer[bytesRead] = '\0';
        std::cout << "子進程輸出:" << buffer << std::endl;
    }

    // 關閉管道句柄
    CloseHandle(hReadPipe);
    CloseHandle(hWritePipe);

    return 0;
}

在上面的代碼中,首先調用CreatePipe函數創建一個管道,然后使用CreateProcess函數創建子進程,并將子進程的標準輸出和標準錯誤重定向到管道的寫端。子進程的輸出會被寫入管道,然后父進程使用ReadFile函數讀取管道的讀端,獲取子進程的輸出。最后,關閉管道句柄。

請將其中的"子進程程序路徑"替換為實際子進程程序的路徑。

0
湖南省| 四平市| 喜德县| 开原市| 五台县| 高密市| 衡阳县| 丰城市| 福安市| 天津市| 泸西县| 凤凰县| 张北县| 海口市| 莫力| 民县| 门头沟区| 孝感市| 长海县| 万盛区| 景谷| 宜春市| 普兰县| 宁武县| 铁力市| 巨野县| 德钦县| 曲阳县| 科尔| 灵武市| 金阳县| 监利县| 封丘县| 靖安县| 深州市| 北京市| 崇左市| 绥棱县| 博客| 高青县| 融水|