故宫演唱会:易语言编程之匿名管道应用指南
来源:百度文库 编辑:偶看新闻 时间:2024/05/08 13:26:53
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:好了 得到文本:
到文本(文本)