Maison > Questions et réponses > le corps du texte
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.
迷茫2017-05-16 13:22:54
#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;
}