導航:首頁 > 編程語言 > 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管道編程相關的資料

熱點內容
如何做淘寶代理伺服器 瀏覽:658
gz壓縮文件夾 瀏覽:177
字母h從右往左跑的c語言編程 瀏覽:127
安卓手機如何擁有蘋果手機橫條 瀏覽:765
業余編程語言哪個好學 瀏覽:137
按照文件夾分個壓縮 瀏覽:104
航空工業出版社單片機原理及應用 瀏覽:758
如何在電信app上綁定親情號 瀏覽:376
安卓的怎麼用原相機拍月亮 瀏覽:805
配音秀為什麼顯示伺服器去配音了 瀏覽:755
c盤清理壓縮舊文件 瀏覽:325
app怎麼交付 瀏覽:343
圖蟲app怎麼才能轉到金幣 瀏覽:175
如何做徵文app 瀏覽:446
用什麼app管理斐訊 瀏覽:169
安卓如何下載寶可夢劍盾 瀏覽:166
編譯器開發屬於哪個方向 瀏覽:940
megawin單片機 瀏覽:687
以色列加密貨幣監督 瀏覽:909
程序員前端現在怎麼樣 瀏覽:499