导航:首页 > 编程语言 > vc管道编程

vc管道编程

发布时间:2022-08-02 12:22:31

Ⅰ VC 命名管道

可以在循环中用PeekNamedPipe()函数去判断是否有数据.

Ⅱ 非常怪异,VC++编写匿名管道就是获取不到一个特定命令行输出

64位程序?我这边没有可以运行的环境,运行就

该版本的 C:\Users\lenovo\Desktop\admin.exe 与您运行的 Windows 版本不兼容。请查看计算机的系统信息,了解是否需要 x86 (32 位)或 x64 (64 位)版本的程序,然后联系软件发布者。

这样,你把标准错误输出重定向。因为你在命令窗口看到的输出很可能是标准错误,不是标准输出

Ⅲ vc 匿名管道 出错

这么理解管道不正确。
应该是
1. 父向子管道写数据之后,关闭管道(写一个 FEOF)
2. 子收到数据完成后,再向父写数据,并关闭管道
3. 父收到数据后,显示,关闭所有句柄,结束

比如控制台命令C:\>
C:\>DIR 可以显示当前目录
C:\>DIR | MORE 逐页显示目录,就是DIR先产生数据,通过匿名管道送给MORE程序,MORE显示在控制台上,等待用户翻页,如果DIR完成,则MORE收到匿名管道FEOF数据,关闭管道并退出

这个命令里是先启动的DIR(父),后启动MORE(子),DIR其实已经一口气把所有内容都写入管道了,并且写完后关闭了管道。MORE取到数据,然后执行完毕,退出。

Ⅳ VC++ 管道传递消息问题(追加执行多条命令)

我想这些代码是你所需要的.

HANDLE hChildStdinRd = NULL, hChildStdinWr = NULL,
hChildStdoutRd = NULL, hChildStdoutWr = NULL;
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;
if (!CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &sa, 0))
{
TRACE1("Failed CreatePipe, %d\n", GetLastError());
return FALSE;
}
SetHandleInformation(hChildStdoutRd, HANDLE_FLAG_INHERIT, 0);
if (!CreatePipe(&hChildStdinRd, &hChildStdinWr, &sa, 0))
{
TRACE1("Failed CreatePipe, %d\n", GetLastError());
CloseHandle(hChildStdoutRd);
CloseHandle(hChildStdoutWr);
return FALSE;
}
SetHandleInformation(hChildStdinWr, HANDLE_FLAG_INHERIT, 0);
CString strCmdLine; //自己设置命令了

PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.hStdError = hChildStdoutWr;
si.hStdOutput = hChildStdoutWr;
si.hStdInput = hChildStdinRd;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
BOOL bResult = CreateProcess(NULL,
strCmdLine.GetBuffer(strCmdLine.GetLength() + 1), NULL, NULL, TRUE,
0, NULL, NULL, &si, &pi);
strCmdLine.ReleaseBuffer();
if (!bResult)
{
CloseHandle(hChildStdinRd);
CloseHandle(hChildStdinWr);
CloseHandle(hChildStdoutRd);
CloseHandle(hChildStdoutWr);
return FALSE;
}
m_hChildProcess = pi.hProcess;
CloseHandle(pi.hThread);
CloseHandle(hChildStdinRd);
CloseHandle(hChildStdinWr);
CloseHandle(hChildStdoutWr);

do
{
bResult = ReadFile(hChildStdoutRd, pcRdBuff, BUFFER_SIZE, &dwReadBytes, NULL);
if (!bResult)
{
break;
}
if (dwReadBytes == 0)
{
break;
}
// dosomething
}while (1);
CloseHandle(hChildStdoutRd);
return TRUE;

Ⅳ VC++中,用管道实现进程间的通信是同步还是异步的

应该是异步吧
if(fork())
{
}
else
{
}

Ⅵ 关于VC中利用管道技术取得DOS或者命令行以及外部程序的执行结果

你这个while是可能会导致死循环的
if ( !ReadFile(hRead, buffer, 4095, &bytesRead, NULL) )
break;

因为ReadFile 在读到文件末尾时,有时候返回值并不为0;

正确的做法是判断bytesRead的值,当为0时,才表示读完文件了!

Ⅶ vc编程模拟cmd命令。求高手

1、用 EnumWindows找到这个telnet cmd窗口,hWndTelnet
2、用PostMessage 向 找到的窗口hWndTelnet,发向WM_CHAR消息。

Ⅷ VC如何利用匿名管道实现进程间通信

void CParentProcessDlg::OnOK()
{
SECURITY_ATTRIBUTES SecurityPipe;
SecurityPipe.bInheritHandle = TRUE;
SecurityPipe.lpSecurityDescriptor = NULL;
SecurityPipe.nLength = sizeof(SECURITY_ATTRIBUTES);
if (CreatePipe(&m_hRead,&m_hWrite,&SecurityPipe,0))
{
STARTUPINFO strinfo;
memset(&strinfo,0,sizeof(STARTUPINFO));
strinfo.cb = sizeof(STARTUPINFO); strinfo.hStdInput = m_hRead;
strinfo.dwFlags = STARTF_USESTDHANDLES;
strinfo.hStdOutput = m_hWrite; PROCESS_INFORMATION procInfo;
memset(&procInfo,0,sizeof(PROCESS_INFORMATION)); CreateProcess(NULL,"ChildProcess.exe",&SecurityPipe,&SecurityPipe,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&strinfo,&procInfo);
char data[]="明日科技";
unsigned long len;

if (! WriteFile(m_hWrite,data,8,&len,NULL))
{
MessageBox("数据写入失败");
}
}
else
MessageBox("匿名管道创建失败");
}
void CChildProcessDlg::OnButtonread()
{
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
if (hInput != INVALID_HANDLE_VALUE )
{
char data[10];
memset(data,0,10);
unsigned long len;
int pos = ReadFile(hInput,data,10,&len,NULL);
m_Data = data;
UpdateData(FALSE);
CloseHandle(hInput);
}
}

Ⅸ VC 命名管道如何局域网通信

本地套接字链接如果正确的话,两台主机之间通信就不应该有问题,如果通信不成功,现考虑一下防火墙。

阅读全文

与vc管道编程相关的资料

热点内容
php开发客户端 浏览:996
theisle测试服怎么搜服务器 浏览:445
广播PDF 浏览:216
单片机编程300例汇编百度 浏览:33
腾讯云连接不上服务器 浏览:221
不能用来表示算法的是 浏览:859
6轴机器人算法 浏览:890
手机主题照片在哪个文件夹 浏览:294
安卓手机后期用什么软件调色 浏览:628
cad修改快捷键的命令 浏览:242
好钱包app怎么登录不了 浏览:859
树莓派都用python不用c 浏览:757
access文件夹树的构造 浏览:662
安卓多指操作怎么设置 浏览:658
linux树形目录 浏览:727
平方根的简单算法 浏览:898
千牛订单页面信息加密取消 浏览:558
单片机自制红外遥控灯 浏览:719
服务器最小配置怎么弄 浏览:853
ibm服务器硬件如何升级 浏览:923