扫码关注官方订阅号
在网上找了好多介绍管道的文章,可是贴出来的代码要么是片段,要么就连拼写都是错误百出,希望哪位大神能帮忙写一个完整的简单的实例,我好参考学习。我想实现的效果:主程序创建一个子进程,执行另外一个exe程序,父进程通过匿名管道传输一个字节数组给子进程,子进程收到数据去处理。两个程序都是C++程序。运行在windows上。
人生最曼妙的风景,竟是内心的淡定与从容!
#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; }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
人生最曼妙的风景,竟是内心的淡定与从容!