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
887

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  #include  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
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!