梅花怎么种植方法:易语言编程之匿名管道应用指南

来源:百度文库 编辑:中财网 时间:2024/04/29 04:11:42
易语言编程之匿名管道应用指南 作者:Wise☆Ma… 文章来源:本站原创 点击数:164 更新时间:2009/10/3 13:30:28

1、概述:

什么是匿名管道:

答:匿名管道(Pipe)是指 父进程与子进程之间的通讯方式之一。

2、使用到的API函数:

CreatePipe    创建匿名管道

CloseHandle  关闭句柄,在后面可以用于关闭多余的管道

CreateProcessA 创建一个新的进程,可以设置读写管道

PeekNamedPipe 查看管道中的数据

ReadFile 读文件,该命令可以用于读取管道中的数据

3、结构体(自定义数据类型)

PROCESS_INFORMATION

SECURITY_ATTRIBUTES

STARTUPINFO

4、实现原理:

首先,定义一个整型变量hWrite

SECURITY_ATTRIBUTES.nLength = 12
SECURITY_ATTRIBUTES.lpSecurityDescriptor = 0
SECURITY_ATTRIBUTES.bInheritHandle = 1

这里创建管道

STARTUPINFO.cb = 68
STARTUPINFO.dwFlags =257
STARTUPINFO.wShowWindow = 0
STARTUPINFO.hStdOutput = hWrite
STARTUPINFO.hStdError = hWrite
这里创建出一个新进程,然后用closehandle关闭多余句柄

然后就可以读取数据了。

5、补充说明:

①怎样创建管道:

例如:

CreateProcessA(0, “cmd.exe /c ” + 一个dos命令, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION)

‘然后就用 CloseHandle 关闭多余句柄

CoseHandle(hWrite)'刚才定义的变量,此时是多余的句柄,关闭它!

②怎样读取出管道中的数据?

step 1:PeekNamedPipe该函数看看管道中是否有数据

         e.g: PeekNamedPipe (读取句柄, 0, 0, 0, 长度, 0)'两个变量:读取句柄 和 长度

step 2:当管道中有数据时(此处可以加一个判断语句,当 长度(上面的变量) <>0  时开始读取数据

         e.g: 定义几个变量 :文本(字节集 型),

               文本=取空白字节集(1024)'推荐使用1024这个值 1024b=1kb

               ReadFile(读取句柄,文本,1023,长度,0)

step 3:好了 得到文本:

                     到文本(文本)