c-关于Windows下管道通信的问题

问题描述

关于Windows下管道通信的问题

我想要通过管道通信控制CMD,能从父进程读数据就是写不了,WriteFile后没反应,szCOMMAND改成随便一个DOS命令,就是没反应,没辙了,请问代码什么地方出了问题呢?
SECURITY_ATTRIBUTES sa;
SECURITY_ATTRIBUTES sa1;
HANDLE hRead_A, hWrite_A;
HANDLE hRead_B, hWrite_B;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
sa1.bInheritHandle = TRUE;
sa1.lpSecurityDescriptor = NULL;
sa1.nLength = sizeof(sa1);
if (!CreatePipe(&hRead_A, &hWrite_A, &sa, 0)) {
printf("ERROR,createpipe_1");
}
if (!CreatePipe(&hRead_B, &hWrite_B, &sa1, 0)){
printf("ERROR,createpipe_2");

}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdInput = hRead_A;
si.hStdError = hWrite_B;
si.hStdOutput = hWrite_B;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL, TEXT("cmd")
    , NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi)) {
    printf("createprocess %d",GetLastError());
}

char buffer[4096] = { 0 };
DWORD bytesRead;
while (true) {
    DWORD dwdw;
    WriteFile(hWrite_A,szCOMMAND , sizeof(szCOMMAND), &dwdw, NULL);
    if (ReadFile(hRead_B, buffer, 4095, &bytesRead, NULL) == NULL)
        break;
    printf(buffer);
}
![图片说明](http://img.ask.csdn.net/upload/201503/18/1426675258_757052.jpg)
这个是把szCOMMAND改成ping命令的,运行后没反应
![图片说明](http://img.ask.csdn.net/upload/201503/18/1426675388_229721.jpg)
时间: 2024-08-25 18:42:06

c-关于Windows下管道通信的问题的相关文章

windows编程-windows下udp通信,我想传输int型数据数组,而不是char字符数组,怎么传输啊?

问题描述 windows下udp通信,我想传输int型数据数组,而不是char字符数组,怎么传输啊? 似乎sendto函数和recvfrom函数在windows下只能传输char数据或数组,对于int数据或是其他类型数据或结构体都不能传输,这个问题怎么解决啊?我想传输int型数组啊.. ?linux下可是什么类型都能传输啊... 下面是发送函数sendto和接受函数recvfrom的定义: C++系统声明 int PASCAL FAR sendto ( IN SOCKET s, IN const

我在做windows下的蓝牙4.0通信编程,想买一个适配器,想问下对适配器有要求吗

问题描述 我在做windows下的蓝牙4.0通信编程,想买一个适配器,想问下对适配器有要求吗 还有程序是怎么与适配器联系的呀,初学,有过开发经验的大神帮帮我吧,急急急,拜托啦 解决方案 没什么要求,京东上30块钱的足够了.注意看清楚支持bluetooth4.0就可以.蓝牙的开发除了配对,其它和网络类似.很简单的.会有一个ip地址.不需要你额外的代码.

Windows下php socket通信怎么实现多线程操作?

问题描述 Windows下php socket通信怎么实现多线程操作? php socket通信,我想实现多个客户端可以独立连接,接受发送数据,不知道怎么实现,是在Windows下的, 解决方案 创建线程池,每一个链接都对应一个线程

windows下用c实现Socket通信

原文:windows下用c实现Socket通信 原本以为c是跨平台,所以,c在windows下和linux下的程序应该是类似于Java,什么都不用改变的,今儿才恍然大悟,他们的类库不一样啊-- 下面我贴出来一个windows下的c语言socket通信例子,这里我们客户端传递一个字符串,服务器端进行接收. [实际上我们需要完成的二进制流的传输,需要使用unsigned char来实现,因为c里没有byte数据类型,这里我们不以byte为例,因为效果不会很直观,我们采取最简单的字符串交互.] [服务

Linux下C编程,进程通信之无名管道通信

最近在看进程间的通信,下面说说管道通信之无名管道. 1.概述 管道是Linux中很重要的一种通信方式,他是把一个程序的输出直接连接到另一个程序的输入,并且管道具有队列的特性.如Linux命令,"ps -ef | grep root".如下图所示: 2.无名管道 2.1特点 (1)它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间). (2)它是一个半双工的通信模式,具有固定的读端和写端. (3)管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read.w

Windows下进程间通信及数据共享

进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成. 多进程/多线程是Windows操作系统的一个基本特征.Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换.  

<转>windows下进程间通信的方式

1 进程与进程通信  进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码.数据以及它可利用的系统资源(如文件.管道等)组成.多进程/多线程是Windows操作系统的一个基本特征.Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共

windows下MRTG安装全攻略

在一个网络中,作为网络工程师或者网络管理员,需要随时了解网络的各种状态,以判断网络是否处于健康状态或者随时了解网络的流量.每个路由器的流量.每个交换机端口的流量-,以供年度报告时向上级领导提供详实的数据及图形报告.在这里,我先把自己有关如何获取网络流量的方法向大家讲解一下,如果有必要,您可以立即动手,自己做一个公司的网络流量监控图出来.网络流量的监控需要涉及到SNMP.PERL.MRTG和一点网页的相关知识,现在我就 STEP BY STEP给大家讲解怎么具体实施.我的水平有限,如有错误或者更好

PHP多线程编程之管道通信实例分析

 这篇文章主要介绍了PHP多线程编程之管道通信,实例分析了管道通信的原理与相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP多线程编程之管道通信用法.分享给大家供大家参考.具体分析如下: 一个线程如果是个人英雄主义,那么多线程就是集体主义,你不再是一个独行侠,而是一个指挥家. 管道通信: 1. 管道可以认为是一个队列,不同的线程都可以往里面写东西,也都可以从里面读东西.写就是 在队列末尾添加,读就是在队头删除. 2. 管道一般有大小,默认一般是4K,也就是内容