匿名管道是一种未命名的、单向管道通常用来在一个父进程和一个子进程之间传输数据。匿名的管道只能实现本地机器上两个进程间的通信而不能实现跨网络的通信。

#include <windows.h>
#include <iostream>
using namespace std;int main(int argc, char* argv[])
{HANDLE hpiperead = NULL , hpipewrite = NULL;SECURITY_ATTRIBUTES ai;     //安全属性ai.nLength = sizeof(SECURITY_ATTRIBUTES);ai.bInheritHandle = true ;ai.lpSecurityDescriptor = NULL ;if (!CreatePipe(&hpiperead , &hpipewrite , &ai ,0 ))  //创建管道{printf("创建匿名管道失败\n");return 0;}char com[1024]; //控制命令char buff[255];cin>>buff;strcpy( com , "cmd.exe /c" );strcat( com , buff);STARTUPINFO si;PROCESS_INFORMATION pi;     GetStartupInfo(&si);    //获取当前进程的STARTUPINFOsi.cb = sizeof(STARTUPINFO);si.hStdError = hpipewrite ;si.hStdOutput = hpipewrite ;si.wShowWindow = SW_SHOW ;si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;if (!CreateProcess(NULL , com , NULL , NULL , true , NULL,NULL , NULL , &si , &pi)  )      //创建隐藏的CMD进程{CloseHandle(hpipewrite);CloseHandle(hpiperead) ;cout<<"1"<<endl;return 0;}char outbuff[4096];DWORD byteread;while (1){memset( outbuff ,'\0' ,4096 );if (ReadFile(hpiperead , outbuff , 4095 , &byteread , NULL) == NULL){break;}printf("%s",outbuff);memset( outbuff ,'\0' ,4096 );}cout<<endl;//创建内核对象使用完之后一定记得关闭,有可能会产生内存泄露CloseHandle(hpipewrite);CloseHandle(hpiperead) ;CloseHandle(pi.hProcess);CloseHandle(pi.hThread) ;return 0;
}

匿名管道 c++实现相关推荐

  1. php+管道+pipe管道,C++ 匿名管道执行DOS命令

    最近在开发一个项目.需要PHP Sock连接到服务器中执行DOS 命令 , 所以想到了命名管道 CreatePipe 其函数原型BOOL CreatePipe( PHANDLE hReadPipe, ...

  2. 8、进程通信-匿名管道

    匿名管道 一个单向,未命名的管道,通常用来在一个父进程和一个子进程间传输数据.只能实现本地机器上两个进程间的通信,而不能实现跨网络的通信. BOOL CreatePipe( PHANDLE hRead ...

  3. 进程通信之二 管道技术第二篇 匿名管道

    上一篇<进程通信之二 管道技术第一篇 输入输出的重定向>示范了增加若干程序代码来完成程序输入输出的重定向,并提出了如果没有程序源代码,只有程序文件如何来完成重定向.本篇就介绍如何使用匿名管 ...

  4. 进程间通信(7) “剪贴板“、“匿名管道“、“命名管道“、“邮槽“4种方式总结

    1. 剪贴板和匿名管道只能同一-台机器上 命名管道和邮槽还可以实现跨网络的进程间通信; 邮槽是基于广播通信的,可以一对多的单向通信, 数据量较小,通常都是在424字节以下 命名管道只能点对点的单一的通 ...

  5. 进程间通信(4) 匿名管道

    匿名管道没有名称,所以只能在父进程中调用CreateProcess函数创建子进程时,将管道的读.写句柄传递给子进程. 匿名管道只能实现本地机器上两个进程间的通信,而不能实现跨网络的通信. 1. 过程: ...

  6. 进程间通信——匿名管道

    使用匿名管道做进程通信,需要用父进程创建一个子进程,该子进程的标准输入输出句柄由父进程指定. 无论父进程还是子进程,都可以收发数据,这里仅演示父进程发数据,子进程打印数据. 父进程循环从控制台读数据, ...

  7. Visual C++下对匿名管道的编程实现

    可以使用管道 Visual C++下对匿名管道的编程实现 概述 管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机.一个进程在向管道写入 ...

  8. 匿名管道 阻塞_Linux系统编程—有名管道

    ▋**1. 管道的概念** 管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式. 1.1 管道本质 管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区, ...

  9. pipe创建匿名管道`

    pipe创建的管道为匿名管道,匿名管道只能在有关系的进程之间使用,例如父进程和子进程,由同一个父进程创建的子进程或称为兄弟进程 如图所示若管道只有一个,并且管道只能进程单向通讯,因此,在子进程继承父进 ...

  10. CreatePipe匿名管道通信

    管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机.一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来.匿名管道(An ...

最新文章

  1. 2021年大数据Hive(十二):Hive综合案例!!!
  2. 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包 - - 博客频道 - CSDN.NET...
  3. VTK:Medical之MedicalDemo1
  4. EcStore中的App是什么东西?
  5. bzoj#4161-Shlw loves matrixI【常系数线性齐次递推】
  6. java 写tb级文件_三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!
  7. 怎么把c语言变成汇编语言,如何把汇编语言转换成C语言
  8. htmlspecialchars_decode 与 html_entity_decode
  9. nodejs的简单爬虫
  10. SAP 批导程序导入Excel后,Excel自动打开
  11. 微信扫码ios:scanQRCode:the permission value is offline verifying
  12. 揭秘华为投资版图:规模小、数量少,刀刀致命
  13. Pycharm中.py文件调用其他.py文件的函数
  14. 轻轻松松背单词软件测试,Englishfield词汇记忆与测试
  15. jenkins 配置代理
  16. SF1006-ASEMI超快恢复二极管SF1006
  17. linux开机卡在usb,UUI v1.9.7.3 轻松制作 Linux 版 USB 开机随身碟、记忆卡(Universal USB Installer)...
  18. 怎么打开本地计算机策略编辑器,打开本地组策略编辑器; 2.在弹出的本地组策略编辑器窗口...
  19. java+OpenCV3 +百度OCR(或tesseract) 识别表格数据
  20. 刚柔相济 端庄大方——张銅彦行楷书摭谈

热门文章

  1. 单片机ADC采样算法----消抖滤波法
  2. SpringMVC中@Controller和@RequestMapping
  3. C++中STL-队列和优先队列
  4. python基础——python容器的有序性和可变性总结
  5. Pytorch:比较函数
  6. visio交叉线去掉交叉点弯曲方法
  7. 中兴网信“智慧旅游”亮相2016国际孔子文化节
  8. 理解阻塞非阻塞与同步异步
  9. Linux集群和自动化维1.3 如何根据服务器应用选购服务器
  10. linux 编译运行c文件