C++匿名管道详解及简单案例基于VS2013
C++匿名管道详解及简单案例(基于VS2013),包括父进程和子进程的创建以及各行代码的详细注释
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-09 09:04 匿名管道程序
目录 0 2018-03-09 09:02 匿名管道程序Anonymous Pipe
目录 0 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipe
文件 2274 2018-03-09 08:49 匿名管道程序Anonymous PipeAnonymous PipeAnonymous Pipe.cpp
文件 4548 2018-03-09 08:32 匿名管道程序Anonymous PipeAnonymous PipeAnonymous Pipe.vcxproj
文件 1321 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous PipeAnonymous Pipe.vcxproj.filters
目录 0 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebug
文件 155 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.log
文件 206943 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.obj
文件 1703936 2018-03-09 08:32 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.pch
目录 0 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlog
文件 209 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogAnonymous Pipe.lastbuildstate
文件 30938 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogCL.read.1.tlog
文件 1984 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogCL.write.1.tlog
文件 1838 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogcl.command.1.tlog
文件 1814 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tloglink.command.1.tlog
文件 3544 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tloglink.read.1.tlog
文件 1066 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tloglink.write.1.tlog
文件 11813 2018-03-09 08:32 匿名管道程序Anonymous PipeAnonymous PipeDebugstdafx.obj
文件 764928 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugvc120.idb
文件 487424 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugvc120.pdb
文件 1559 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous PipeReadMe.txt
文件 66560 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipechild.exe
文件 220 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipestdafx.cpp
文件 234 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipestdafx.h
文件 236 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipe argetver.h
文件 32702464 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipe.sdf
文件 988 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipe.sln
文件 19968 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipe.v12.suo
目录 0 2018-03-09 08:36 匿名管道程序Anonymous PipeDebug
文件 74752 2018-03-09 08:55 匿名管道程序Anonymous PipeDebugAnonymous Pipe.exe
............此处省略38个文件信息
#include “stdafx.h“
#include “windows.h“
#include
using namespace std;
HANDLE hRead hWrite;
void ReadMsg()
{
char buf1[512];
DWORD dwRead;
if (!ReadFile(hRead buf1 512 &dwRead NULL))
{
cout<<“读取数据失败!“;
return;
}
else
{
cout << “管道中读取数据为:“< system(“pause“);
}
}
void WriteMsg()
{
char buf[100];
cout << “请输入你要发给子进程的消息:
“;
cin >> buf;
DWORD dwWrite;
if (!WriteFile(hWrite buf strlen(buf) &dwWrite NULL))
{
cout << “写入数据失败!“;
return;
}
else
cout << “成功写入数据!
“;
}
int main(int argc char* argv[])
{
SECURITY_ATTRIBUTES sa; //定义一个安全结构体类型的变量Sa1
sa.bInheritHandle = TRUE;//让子进程可以继承父进程创建的匿名管道的读写句柄
sa.lpSecurityDescriptor = NULL;//让系统为创建的匿名管道赋予默认的安全描述符
sa.nLength = sizeof(SECURITY_ATTRIBUTES);//得到结构体(SECURITY_ATTRIBUTES)的长度
if (!CreatePipe(&hRead &hWrite &sa 0))//判断创建匿名管道是否成功
{
cout << “创建匿名管道失败!
“;
return 0;
}
else
cout << “成功创建匿名管道!
“;
//如果创建匿名管道成功,就启动子进程,并将匿名管道的读写句柄传递给子进程
STARTUPINFO sui;//创建子进程的函数需要的一个结构体类型的值
PROCESS_INFORMATION pi;
ZeroMemory(&sui sizeof(STARTUPINFO));//将其余的成员全部置零,避免造成不好的影响
sui.cb = sizeof(STARTUPINFO);//cb用来存放结构体变量STARTUPINFO的长度
sui.dwFlags = STARTF_USESTDHANDLES;//标志成员,表示当前STARTUPINFO结构体的标准输入,标准输出和标准错误句柄有用
sui.hStdInput = hRead;
sui.hStdOutput = hWrite;//将子进程的标准输入输出句柄分别设置为管道的读、写句柄
sui.hStdError = GetStdHandle(STD_ERROR_HANDLE);
sui.wShowWindow = SW_SHOW; //隐藏命令行窗口
sui.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
WriteMsg();
if (!CreateProcess(NULL “child.exe“ NULL NULL
TRUE 0 NULL NULL &sui &pi))//创建子进程(十个参数)
{
CloseHandle(hRead);
CloseHandle(hWrite);//关闭句柄,将内核对象的使用计数减少1,这样当操作系统发现内核对象的使用计数为0时,将清除内核对象。
hRead = NULL;
hWrite = NULL;
cout << “创建子进程失败!“;
return 0;
}
else
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
Sleep(200);
ReadMsg();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-09 09:04 匿名管道程序
目录 0 2018-03-09 09:02 匿名管道程序Anonymous Pipe
目录 0 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipe
文件 2274 2018-03-09 08:49 匿名管道程序Anonymous PipeAnonymous PipeAnonymous Pipe.cpp
文件 4548 2018-03-09 08:32 匿名管道程序Anonymous PipeAnonymous PipeAnonymous Pipe.vcxproj
文件 1321 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous PipeAnonymous Pipe.vcxproj.filters
目录 0 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebug
文件 155 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.log
文件 206943 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.obj
文件 1703936 2018-03-09 08:32 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.pch
目录 0 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlog
文件 209 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogAnonymous Pipe.lastbuildstate
文件 30938 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogCL.read.1.tlog
文件 1984 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogCL.write.1.tlog
文件 1838 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogcl.command.1.tlog
文件 1814 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogli
文件 3544 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogli
文件 1066 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugAnonymous Pipe.tlogli
文件 11813 2018-03-09 08:32 匿名管道程序Anonymous PipeAnonymous PipeDebugstdafx.obj
文件 764928 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugvc120.idb
文件 487424 2018-03-09 08:55 匿名管道程序Anonymous PipeAnonymous PipeDebugvc120.pdb
文件 1559 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous PipeReadMe.txt
文件 66560 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipechild.exe
文件 220 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipestdafx.cpp
文件 234 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipestdafx.h
文件 236 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipe argetver.h
文件 32702464 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipe.sdf
文件 988 2018-03-09 08:31 匿名管道程序Anonymous PipeAnonymous Pipe.sln
文件 19968 2018-03-09 09:02 匿名管道程序Anonymous PipeAnonymous Pipe.v12.suo
目录 0 2018-03-09 08:36 匿名管道程序Anonymous PipeDebug
文件 74752 2018-03-09 08:55 匿名管道程序Anonymous PipeDebugAnonymous Pipe.exe
............此处省略38个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)