VC使用管道重定向进程输入输出
来源:互联网 发布:python中get函数 编辑:程序博客网 时间:2024/06/05 13:25
创建管道
std::string sLog;HANDLE hRead1, hWrite1, hRead2, hWrite2;SECURITY_ATTRIBUTES sat;sat.nLength = sizeof(SECURITY_ATTRIBUTES);sat.bInheritHandle = true;sat.lpSecurityDescriptor = nullptr;if(!CreatePipe(&hRead1,&hWrite1,&sat,0)){sLog = "管道1创建失败...";return false;}if(!CreatePipe(&hRead2,&hWrite2,&sat,0)){sLog = "管道2创建失败...";CloseHandle(hRead1);CloseHandle(hWrite1);return false;}
创建进程并重定向
STARTUPINFO startupinfo;startupinfo.cb = sizeof(STARTUPINFO);GetStartupInfo(&startupinfo);startupinfo.hStdError = hWrite2;startupinfo.hStdOutput = hWrite2;startupinfo.hStdInput = hRead1;startupinfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;startupinfo.wShowWindow = SW_HIDE;PROCESS_INFORMATION pinfo;std::string sCmd = "plink.exe -ssh -P 22 test@192.168.2.10";if(!CreateProcess(NULL, (LPSTR)sCmd.c_str(), NULL, NULL, TRUE, NULL, NULL, NULL, &startupinfo, &pinfo)){sLog = "进程创建失败...";CloseHandle(hRead1);CloseHandle(hWrite1);CloseHandle(hRead2);CloseHandle(hWrite2);return false;}CloseHandle(pinfo.hThread);CloseHandle(pinfo.hProcess);
发送数据
DWORD byteWrite = 0;sCmd = "help\r\n";WriteFile(hWrite1, sCmd.c_str(), sCmd.length(), &byteWrite, NULL); if(byteWrite == sCmd.length())return true;elsereturn false;
读取数据
读之前应先查看管道是否有数据
DWORD byteRead; if(!PeekNamedPipe(hRead2,NULL,0,NULL,&byteRead,NULL)){return false;}if(byteRead <= 0){sLog = "管道无数据\n";return true;}char buffer[1024] = {0}; ReadFile(hRead2, buffer, 4095, &byteRead, NULL);
阅读全文
0 0
- VC使用管道重定向进程输入输出
- C++学习:通过管道进行cmd进程输入输出重定向
- 用无名管道重定向子进程的输入输出
- 管道操作 | 输入输出重定向
- Linux输入输出重定向以及管道
- Linux输入输出重定向以及管道
- linux命令温故知新:输入输出重定向/管道
- vim编辑器,管道,输入输出重定向
- linux输入输出重定向及管道
- 利用管道重定向标准输入输出流
- 【学习Linux】输入输出的重定向,管道
- 10、输入输出重定向及管道
- 第三章 输入输出重定向和管道
- 【linux 命令】输入输出重定向及管道
- 11-输入输出重定向及管道
- Linux输入输出重定向及管道
- 管道重定向之重定向标准输入输出句柄
- 进程通信之二 管道技术第一篇 输入输出的重定向
- 【数据库学习】nosql数据库介绍
- 详解Python中re.sub
- Spring注解剖析
- AS和Gradle Plugin不兼容
- input和select设置为不可修改及取消不可修改
- VC使用管道重定向进程输入输出
- 将一个链表进行降序排列
- Dotween中,DOTween.To()用法
- 关于测试平台输出:“你的输出为: java.lang.ArrayIndexOutOfBoundsException: 15”
- 剑指offer--第一次只出现一次的字符
- HDU--1029 Ignatius and the Princess IV (map&&思维&&memset)
- 1881: 求逆序数(归并排序求逆序数)
- 【python 手机号码归属地】手机号码归属地获取
- jQuery和js获取同一个class的所有的值