无名通道

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

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

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

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://m.tao1949.com/wiki/202508-3919.html

(9)

文章推荐

  • 《速度与激情》揭露边境特工谋杀案判决被撤销

    凤凰城(美联社)——美国一家上诉法院周五宣布,推翻了一名男子因杀害一名美国边境巡逻队特工而被判终身监禁的判决。这名特工的死亡暴露了联邦政府拙劣的“速度与激情”枪支行动。美国第九巡回上诉法院撤销了对HeraclioOsorio-Arellanes的定罪,称他的宪法正当

    2025年08月14日
    0
  • 玩家必看教程“一起宁德钓蟹有挂什么手机”(原来真的有挂)

    家好,今天小编来为大家解答一起宁德钓蟹有挂什么手机有没有挂这个问题咨询软件客服可以免费测试直接加QQ群了解详细,一起宁德钓蟹有挂什么手机的挂在哪里买很多人还不知道,现在让我们一起来看看吧!一、一起宁德钓蟹有挂什么手机记牌器怎么全显示你需要获得记牌器才能全

    2025年08月14日
    0
  • 国际足联:罗纳尔多的纳赛尔转会暂时受限

    洛桑,7月13日——国际足联周四表示,在未偿还债务之前,c罗所在的沙特俱乐部Al-Nassr将被禁止注册新球员。一名国际足联发言人告诉法新社,这支球队“目前由于未偿债务而无法注册新球员”,但他没有透露债务的金额。世界足球管理机构没有说克罗地亚中场马塞

    2025年08月14日
    0
  • 分析必看“九五大厅斗牛开挂视频”(真的有挂)

    家们!今天小编来为大家解答九五大厅斗牛开挂视频这个问题咨询软件客服徽信 的挂在哪里买很多人还不知道,现在让我们一起来看看吧!一、记牌器怎么全显示你需要获得记牌器才能全部显示,否则只显示前面几张牌的数据。如下图所示:获取开挂的软件方法如下:可以通

    2025年08月14日
    0
  • 研究发现,北极积雪增加促进了温室气体的释放

    气候变化的影响正在缩短北极的积雪季节。然而,根据加州大学欧文分校的地球系统科学家进行的一项新研究,北极某些地区的积雪厚度异常加深,这种厚雪正在促使长期冻结的永久冻土中的碳释放,从而增加了二氧化碳和甲烷等温室气体的排放。该研究的主要作

    2025年08月14日
    0
  • 传递经验“口袋广丰有挂吗”确实是有挂

    口袋广丰有挂吗是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微下载使用。口袋广丰有挂吗可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义手机程序系统规律,只需要输入自己想要的开挂功能,一键便可以生成出

    2025年08月14日
    0
  • 2024年12月13日庆祝马耳他共和国日

    马耳他共和国日(Jumir-Repubblika)在每年的12月13日庆祝。这是一个公众假期,学校和大多数企业都关闭。马耳他是地中海中部的一个群岛,位于西西里岛和北非海岸之间。这个国家以其历史遗迹而闻名,这些历史遗迹与一系列统治者有关,包括罗马人、摩尔人、圣约翰骑士、法国人和英

    2025年08月14日
    0
  • 玩家攻略“吉祥麻将有人用挂”(真的有挂)

    吉祥麻将有人用挂是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加我微下载使用。手机打牌可以一键让你轻松成为“必赢”。其操作方式十分简单,打开这个应用便可以自定义手机打牌系统规律,只需要输入自己想要的开挂功能,一键便可以生成出手机

    2025年08月14日
    0
  • 丹佛房租激增,驱逐人数将创新高

    丹佛——今年,由于租户难以支付飞涨的房租,这座城市正朝着创纪录的驱逐数量前进。由于担心情况会变得更糟,一些丹佛市议会议员和社区领袖现在呼吁市长迈克·约翰斯顿增加紧急租赁援助预算的资金。丹佛的领导人仍在整理明年的城市预算。几周后才会最终确定。

    2025年08月14日
    0
  • 终于呈现“字牌开挂神器手打教程视频”爆光开挂猫腻内幕

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

    2025年08月14日
    0

发表回复

本站作者后才能评论

评论列表(4条)

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

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

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

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

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

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

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

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

    联系我们

    邮件:上善若水@sina.com

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

    关注我们