无名通道

匿名管道是计算机进程间的一种单工先进先出通信机制。全双工通信通常需要两个匿名管道。 典型场景为父进程创建匿名管道,然后创建一批子进程继承了这个匿名管道。由于这是未命名的管...

匿名管道是计算机进程间的一种单工先进先出通信机制。全双工通信通常需要两个匿名管道。

典型场景为父进程创建匿名管道,然后创建一批子进程继承了这个匿名管道。由于这是未命名的管道,只能在本地计算机中使用,而不可用于网络间的通信。匿名管道并不支持异步读、写操作。

Unix

管道 (Unix)是类Unix系统上使用极其广泛的进程间传统通信机制。使用 系统调用创建新的管道并返回一对文件描述符指向管道的读终端与写终端。

Windows操作系统

使用创建匿名管道。使用与函数来读写管道。读写操作总是阻塞式。新建进程可继承管道句柄。

读管道时收到一个end-of-file,意味着管道的写端句柄已经关闭。

例子

// 父进程 #include <windows.h> int main() { 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("成功创建匿名管道! "); else printf("创建匿名管道失败,错误代码:%d ", GetLastError()); HANDLE hTemp = GetStdHandle(STD_OUTPUT_HANDLE);// 得到本进程的当前标准输出 SetStdHandle(STD_OUTPUT_HANDLE, hWrite);// 设置标准输出到匿名管道 GetStartupInfo(&si); // 获取本进程的STARTUPINFO结构信息 bRet = CreateProcess( // 创建子进程 NULL, // No module name (use command line) (LPSTR)(LPCSTR)"Client.exe", // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure if (bRet == TRUE) printf("成功创建子进程! "); else printf("创建子进程失败,错误代码:%d ", GetLastError()); SetStdHandle(STD_OUTPUT_HANDLE, hTemp); // 恢复本进程的标准输出 CloseHandle(hWrite); // 关闭写句柄 while (ReadFile(hRead, ReadBuf, 100, &ReadNum, NULL))// 读管道直至管道关闭 { ReadBuf[ReadNum] = '0'; printf("从管道[%s]读取%d字节数据 ", ReadBuf, ReadNum); } if (GetLastError() == ERROR_BROKEN_PIPE) // 输出信息 printf("管道被子进程关闭 "); else printf("读数据错误,错误代码:%d ", GetLastError()); return 0; }

//子进程的标准输出实际上已经重定向到匿名管道写端 #include <stdio.h> int main(int argc, char* argv[]) { for (int i = 0; i < 100; i++) // 发送一些数据到标准输出和标准错误 { printf("i = %d ", i); // 打印提示 cout << "标准输出:" << i << endl; // 打印到标准输出 cerr << "标准错误:" << i << endl; // 打印到标准错误 } return 0; }

参见

  • 命名管道
  • 匿名命名管道
  • 管道 (Unix)

本文来自作者[夜寄易]投稿,不代表上善若水立场,如若转载,请注明出处:https://tao1949.com/wiki/202508-3919.html

(13)

文章推荐

  • 加拿大斥资7600万美元采购德国防空系统以提升乌克兰防御能力

    加拿大国防部长布莱尔星期五宣布,加拿大将向德国领导的帮助乌克兰防御俄罗斯导弹和飞机的行动投入7600万美元,但目前还没有明确的时间表,说明已经从美国购买的系统何时准备就绪。布莱尔在新闻发布会上说:“德国能够让我们的美元在支持乌克兰的过程中获得真正的价值,因为他们不

    2025年08月23日
    0
  • 分享实测攻略“哈糖大菠萝可以开挂吗”(真的有挂)

    家好,今天小编来为大家解答哈糖大菠萝可以开挂吗有没有挂这个问题咨询软件客服可以免费测试,哈糖大菠萝可以开挂吗的挂在哪里买很多人还不知道,现在让我们一起来看看吧!一、哈糖大菠萝可以开挂吗记牌器怎么全显示你需要获得记牌器才能全部显示,否则只显示前面几张牌的数

    2025年08月23日
    0
  • EBS纪录片节展现时代风貌

    第20届EBS国际大会海报最终docu小学节(EIDF)第20届EBS国际纪录片节将于8月21日至27日举行,届时将展出35个国家的56部纪录片。EIDF组委会当天在记者招待会上表示:“今年的纪录片节将在京畿高阳市EBS总部举行开幕式,并在EBS1T

    2025年08月23日
    0
  • 分享实测攻略“怎么买麻将的挂”的确有挂

    怎么买麻将的挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,总是好牌,而且好像能看到其他人的牌一样。所以很多小伙伴就怀疑这款游戏是不是有挂,实际上这款游戏确实是有挂的通过添加客服微:本司针对手游进行匹配,选择我们的四大理

    2025年08月23日
    1
  • 个性化内容的15大优势

    在当今快节奏的数字环境中,个性化内容作为吸引受众的强大工具脱颖而出。个性化内容定制信息以满足个人偏好、行为和兴趣,为每个用户创建独特的体验。这种方法不仅能提高用户粘性,还能提高用户忠诚度和转化率。从电子邮件营销活动到网站用户体验,个性化可以改变企业与受众的联系方式。但是什么让个性

    2025年08月23日
    0
  • 推荐必备“微乐二人麻将怎么开挂的”详细分享开挂

    网上科普有关微乐二人麻将怎么开挂的”话题很是火热,小编也是针对微乐麻将的技术支持和安全性寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。您好,微乐二人麻将怎么开挂的这款游戏可以开挂的,确实是有挂的,通过微信【游戏

    2025年08月23日
    0
  • 救援物资紧急送往海琳飓风隔离社区,死亡人数接近100人

    佩里,佛罗里达州。(美联社)——周一,飓风“海伦”横扫美国东南部几天后,阿什维尔爆发了一场危机,官员们承诺向没有电力和手机服务的洪水灾区提供更多的水、食物和其他物资。风暴造成的死亡人数接近100人。几个州至少有91人丧生。包括山城阿什维尔在内的北卡罗来纳州一个县报

    2025年08月23日
    0
  • 科学直击“微乐游戏怎样免费开挂”分享装挂步骤

    亲,微乐游戏怎样免费开挂这款游戏原来确实可以开挂,详细开挂教程1、起手看牌2、随意选牌3、控制牌型4、注明,就是全场,公司软件防封号、防检测、 正版软件、非诚勿扰。2022首推。全网独家,诚信可靠,无效果全额退款,本司推出的多功能作 弊辅助

    2025年08月23日
    0
  • 伦敦北部一女子因遭治疗师性侵获赔20万英镑

    一名女子声称自己被伦敦北部的一名治疗师强奸,这名治疗师说他的阴茎“就像一束激光”,她获得了20多万英镑的赔偿金。2016年8月,艾拉·詹尼向高等法院起诉迈克尔·卢萨达,原因是他在伦敦贝尔size公园的诊所接受了一次涉及“插入”的治疗。詹尼放弃了匿名权,她

    2025年08月23日
    1
  • 今日分享“长沙麻将开挂神器”(必胜开挂神器)

    亲,长沙麻将开挂神器这款游戏原来确实可以开挂,详细开挂教程1、起手看牌2、随意选牌3、控制牌型4、注明,就是全场,公司软件防封号、防检测、 正版软件、非诚勿扰。2022首推。全网独家,诚信可靠,无效果全额退款,本司推出的多功能作 弊辅助软件

    2025年08月23日
    0

发表回复

本站作者后才能评论

评论列表(4条)

  • 夜寄易
    夜寄易 2025年08月11日

    我是上善若水的签约作者“夜寄易”!

  • 夜寄易
    夜寄易 2025年08月11日

    希望本篇文章《无名通道》能对你有所帮助!

  • 夜寄易
    夜寄易 2025年08月11日

    本站[上善若水]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 夜寄易
    夜寄易 2025年08月11日

    本文概览:匿名管道是计算机进程间的一种单工先进先出通信机制。全双工通信通常需要两个匿名管道。 典型场景为父进程创建匿名管道,然后创建一批子进程继承了这个匿名管道。由于这是未命名的管...

    联系我们

    邮件:上善若水@sina.com

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们