Windows - À la recherche d'un exemple complet, le canal anonyme C++ transmet des données entre les processus parent et enfant !
黄舟
黄舟 2017-05-16 13:20:54
0
1
973

J'ai trouvé beaucoup d'articles présentant les pipelines sur Internet, mais les codes publiés sont soit des fragments, soit même l'orthographe est pleine d'erreurs. J'espère qu'un maître pourra m'aider à écrire un exemple complet et simple auquel je puisse m'y référer. et apprenez.
L'effet que je souhaite obtenir : le programme principal crée un processus enfant et exécute un autre programme exe. Le processus parent transmet un tableau d'octets au processus enfant via un canal anonyme, et le processus enfant reçoit les données à traiter. Les deux programmes sont des programmes C++. Fonctionne sous Windows.

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(1)
迷茫
#include <Windows.h>
#include <iostream>

int main()
{
    auto numArgs = 0;
    CommandLineToArgvW(GetCommandLineW(), &numArgs);

    if (numArgs > 1) {
        std::cout << "我是子进程" << std::endl;
        CHAR szBuffer[16]{ 0 };
        ReadFile(GetStdHandle(STD_INPUT_HANDLE), szBuffer, sizeof(szBuffer), nullptr, nullptr);
        std::cout << szBuffer << std::endl;
    }
    else {
        std::cout << "我是父进程" << std::endl;

        SECURITY_ATTRIBUTES sa{ 0 };
        sa.nLength = sizeof(sa);
        sa.bInheritHandle = TRUE;

        HANDLE hRead;
        HANDLE hWrite;
        CreatePipe(&hRead, &hWrite, &sa, 0);

        STARTUPINFOW si{ 0 };
        si.cb = sizeof(si);
        si.hStdInput = hRead;
        si.dwFlags = STARTF_USESTDHANDLES;

        PROCESS_INFORMATION pi{ 0 };

        WCHAR szCommand[512]{ 0 };
        GetModuleFileNameW(nullptr, szCommand, _countof(szCommand));
        wcscat(szCommand, L" test");
        CreateProcessW(nullptr, szCommand, nullptr, nullptr, TRUE, CREATE_NEW_CONSOLE, nullptr, nullptr, &si, &pi);
        WriteFile(hWrite, "hello", 5, nullptr, nullptr);
    }

    system("pause");
    return 0;
}

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal