啥也不说,看看代码~~
HANDLE hWrite;
HANDLE hRead;
void CParentPipeView::OnPipeCreate()
... {
// TODO: Add your command handler code here
SECURITY_ATTRIBUTES sa;
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;
sa.nLength = sizeof (SECURITY_ATTRIBUTES);
if ( ! CreatePipe( & hRead, & hWrite, & sa, 0 ))
... {
MessageBox( " 创建匿名管道失败! " );
return ;
}
STARTUPINFO sui;
PROCESS_INFORMATION pi;
ZeroMemory( & sui, sizeof (STARTUPINFO));
sui.cb = sizeof (STARTUPINFO);
sui.dwFlags = STARTF_USESTDHANDLES;
sui.hStdInput = hRead;
sui.hStdInput = hWrite;
sui.hStdError = GetStdHandle(STD_ERROR_HANDLE);
if ( ! CreateProcess( " ../ChildPipe/Debug/ChildPipe.exe " ,NULL,NULL,NULL,TRUE, 0 ,NULL,NULL, & sui, & pi))
... {
CloseHandle(hRead);
CloseHandle(hWrite);
hRead = NULL;
hWrite = NULL;
MessageBox( " 创建子进程失败! " );
return ;
}
else
... {
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
}
void CParentPipeView::OnPipeWrite()
... {
// TODO: Add your command handler code here
char buf[] = " http://zhangdali.org " ;
DWORD dwWrite;
if ( ! WriteFile(hWrite,buf,strlen(buf) + 1 , & dwWrite,NULL))
... {
MessageBox( " 写入数据失败! " );
return ;
}
}
void CParentPipeView::OnPipeRead()
... {
// TODO: Add your command handler code here
char buf[ 100 ];
DWORD dwRead;
if ( ! ReadFile(hRead,buf, 100 , & dwRead,NULL))
... {
MessageBox( " 读取数据失败! " );
return ;
}
MessageBox(buf);
}
void CChildPipeView::OnPipeRead()
... {
// TODO: Add your command handler code here
char buf[ 100 ];
DWORD dwRead;
if ( ! ReadFile(hRead,buf, 100 , & dwRead,NULL))
... {
MessageBox( " 读取数据失败! " );
return ;
}
MessageBox(buf);
}
void CChildPipeView::OnPipeWrite()
... {
// TODO: Add your command handler code here
char buf[] = " 匿名管道测试程序 " ;
DWORD dwWrite;
if ( ! WriteFile(hWrite,buf,strlen(buf) + 1 , & dwWrite,NULL))
... {
MessageBox( " 写入数据失败! " );
return ;
}
}