?? server.cpp
字號:
// Server.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int main(int argc, char* argv[])
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
char ReadBuf[100];
DWORD ReadNum;
// 管道讀句柄
HANDLE hRead;
// 管道寫句柄
HANDLE hWrite;
// 創建匿名管道
BOOL bRet = CreatePipe(&hRead, &hWrite, NULL, 0);
if (bRet == TRUE)
printf("成功創建匿名管道!\n");
else
printf("創建匿名管道失敗,錯誤代碼:%d\n", GetLastError());
// 得到本進程的當前標準輸出
HANDLE hTemp = GetStdHandle(STD_OUTPUT_HANDLE);
// 設置標準輸出到匿名管道
SetStdHandle(STD_OUTPUT_HANDLE, hWrite);
// 獲取本進程的STARTUPINFO結構信息
GetStartupInfo(&si);
// 創建子進程
bRet = CreateProcess(NULL, "Client.exe", NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi);
// 恢復本進程的標準輸出
SetStdHandle(STD_OUTPUT_HANDLE, hTemp);
// 輸入信息
if (bRet == TRUE)
printf("成功創建子進程!\n");
else
printf("創建子進程失敗,錯誤代碼:%d\n", GetLastError());
// 關閉寫句柄
CloseHandle(hWrite);
// 讀管道直至管道關閉
while (ReadFile(hRead, ReadBuf, 100, &ReadNum, NULL))
{
ReadBuf[ReadNum] = '\0';
printf("從管道[%s]讀取%d字節數據\n", ReadBuf, ReadNum);
}
// 輸出信息
if (GetLastError() == ERROR_BROKEN_PIPE)
printf("管道被子進程關閉\n");
else
printf("讀數據錯誤,錯誤代碼:%d\n", GetLastError());
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -