• 大小: 22.03MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-18
  • 语言: C/C++
  • 标签: 匿名管道  

资源简介

C++匿名管道详解及简单案例(基于VS2013),包括父进程和子进程的创建以及各行代码的详细注释

资源截图

代码片段和文件信息

#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 << “请输入你要发给子进程的消息:\n“;
cin >> buf;
DWORD dwWrite;
if (!WriteFile(hWrite buf strlen(buf) &dwWrite NULL))
{
cout << “写入数据失败!“;
return;
}
else
cout << “成功写入数据!\n“;
}

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 << “创建匿名管道失败!\n“;
return 0;
}
else
cout << “成功创建匿名管道!\n“;
//如果创建匿名管道成功,就启动子进程,并将匿名管道的读写句柄传递给子进程
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 Pipe\Anonymous Pipe\
     文件        2274  2018-03-09 08:49  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Anonymous Pipe.cpp
     文件        4548  2018-03-09 08:32  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Anonymous Pipe.vcxproj
     文件        1321  2018-03-09 08:31  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Anonymous Pipe.vcxproj.filters
     目录           0  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\
     文件         155  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.log
     文件      206943  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.obj
     文件     1703936  2018-03-09 08:32  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.pch
     目录           0  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\
     文件         209  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\Anonymous Pipe.lastbuildstate
     文件       30938  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\CL.read.1.tlog
     文件        1984  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\CL.write.1.tlog
     文件        1838  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\cl.command.1.tlog
     文件        1814  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\link.command.1.tlog
     文件        3544  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\link.read.1.tlog
     文件        1066  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\Anonymous Pipe.tlog\link.write.1.tlog
     文件       11813  2018-03-09 08:32  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\stdafx.obj
     文件      764928  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\vc120.idb
     文件      487424  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Anonymous Pipe\Debug\vc120.pdb
     文件        1559  2018-03-09 08:31  匿名管道程序\Anonymous Pipe\Anonymous Pipe\ReadMe.txt
     文件       66560  2018-03-09 09:02  匿名管道程序\Anonymous Pipe\Anonymous Pipe\child.exe
     文件         220  2018-03-09 08:31  匿名管道程序\Anonymous Pipe\Anonymous Pipe\stdafx.cpp
     文件         234  2018-03-09 08:31  匿名管道程序\Anonymous Pipe\Anonymous Pipe\stdafx.h
     文件         236  2018-03-09 08:31  匿名管道程序\Anonymous Pipe\Anonymous Pipe\targetver.h
     文件    32702464  2018-03-09 09:02  匿名管道程序\Anonymous Pipe\Anonymous Pipe.sdf
     文件         988  2018-03-09 08:31  匿名管道程序\Anonymous Pipe\Anonymous Pipe.sln
     文件       19968  2018-03-09 09:02  匿名管道程序\Anonymous Pipe\Anonymous Pipe.v12.suo
     目录           0  2018-03-09 08:36  匿名管道程序\Anonymous Pipe\Debug\
     文件       74752  2018-03-09 08:55  匿名管道程序\Anonymous Pipe\Debug\Anonymous Pipe.exe
............此处省略38个文件信息

评论

共有 条评论

相关资源