注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

从C开始

 
 
 

日志

 
 

进程间通信 - 匿名管道  

2010-11-21 19:40:51|  分类: MFC |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

//匿名管道是用在本地计算机父进程与子进程中通信的技术

//父进程
void CPipeView::OnPipeCreate() 
{
// TODO: Add your command handler code here
SECURITY_ATTRIBUTES sa;
sa.bInheritHandle = TRUE;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;

if (!CreatePipe(&m_hRead, &m_hWrite, &sa, 0))
{
MessageBox("创建匿名管道失败!");
return;
}

STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = m_hWrite;
si.hStdInput = m_hRead;
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);

PROCESS_INFORMATION pi;

if (!CreateProcess("Chlid.exe", NULL, NULL, NULL,
TRUE, 0, NULL, NULL, &si, &pi))
{
MessageBox("创建子进程失败!");
CloseHandle(m_hRead);
CloseHandle(m_hWrite);
m_hRead = NULL;
m_hWrite = NULL;
return;
}
else
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
}

void CPipeView::OnPipeRead() 
{
// TODO: Add your command handler code here
char reafBuf[100];
DWORD dwRead;
if(!ReadFile(m_hRead, reafBuf, 100, &dwRead, NULL))
{
MessageBox("读取数据失败!");
return;
}
MessageBox(reafBuf);
}

void CPipeView::OnPipeWrite() 
{
// TODO: Add your command handler code here
char writeBuf[] = "http://www.pcslonline.com";
DWORD dwWrite;
if (!WriteFile(m_hWrite, writeBuf, strlen(writeBuf) + 1, &dwWrite, NULL))
{
MessageBox("写入数据失败!");
return;
}
}


//子进程

void CChlidView::OnPipeRead() 
{
// TODO: Add your command handler code here
char reafBuf[100];
DWORD dwRead;
if(!ReadFile(m_hRead, reafBuf, 100, &dwRead, NULL))
{
MessageBox("读取数据失败!");
return;
}
MessageBox(reafBuf);
}


void CChlidView::OnPipeWrite() 
{
// TODO: Add your command handler code here
char writeBuf[] = "minzhenfei tiancai";
DWORD dwWrite;
if (!WriteFile(m_hWrite, writeBuf, strlen(writeBuf) + 1, &dwWrite, NULL))
{
MessageBox("写入数据失败!");
return;
}
}

void CChlidView::OnInitialUpdate() 
{
CView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
m_hRead = GetStdHandle(STD_INPUT_HANDLE);
m_hWrite = GetStdHandle(STD_OUTPUT_HANDLE);
}
  评论这张
 
阅读(148)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018