📄 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 + -