管道(Pipe)/createPipe

管道(Pipe)/createPipe

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

 BOOL CreatePipe(PHANDLE hReadPipe, // 指向读句柄的指针
 PHANDLE hWritePipe, // 指向写句柄的指针
 LPSECURITY_ATTRIBUTES lpPipeAttributes, // 指向安全属性的指针
 DWORD nSize // 管道大小);

管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道server,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,还有一进程就能够从管道的还有一端将其读取出来。匿名管道(Anonymous Pipes)是在父进程和子进程间单向数据传输的一种未命名的管道,仅仅能在本地计算机中使用,而不可用于网络间的通信。

管道server将lpPipeAttributes 指向的SECURITY_ATTRIBUTES数据结构的数据成员bInheritHandle设置为TRUE,那么CreatePipe()创建的管道读、写句柄将会被继承

父进程能够调用进程创建函数CreateProcess()生成子进程。假设父进程要发送数据到子进程,父进程可调用WriteFile()将数据写入到管道(传递管道写句柄给函数),子进程则调用GetStdHandle()取得管道的读句柄,将该句柄传入ReadFile()后从管道读取数据。
  假设是父进程从子进程读取数据,那么由子进程调用GetStdHandle()取得管道的写入句柄,并调用WriteFile()将数据写入到管道。然后,父进程调用ReadFile()从管道读取出数据(传递管道读句柄给函数)。

在用WriteFile()函数向管道写入数据时,仅仅有在向管道写完指定字节的数据后或是在有发生错误时函数才会返回。如管道缓冲已满而数据还没有写完,WriteFile()将要等到还有一进程对管道中数据读取以释放出很多其它可用空间后才可以返回。管道server在调用CreatePipe()创建管道时以參数nSize对管道的缓冲大小作了设定。
  匿名管道并不支持异步读、写操作,这也就意味着不能在匿名管道中使用ReadFileEx()和WriteFileEx(),并且ReadFile()和WriteFile()中的lpOverLapped參数也将被忽略。匿名管道将在读、写句柄都被关闭后退出,也能够在进程中调用CloseHandle()函数来关闭此句柄。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118215.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月9日 上午10:00
下一篇 2021年12月9日 上午11:00


相关推荐

  • 项目管理风险把控:三点估算法

    项目管理风险把控:三点估算法施工时间划分为乐观时间 最可能时间 悲观时间乐观时间 也就是工作顺利情况下的时间为 a 最可能时间 最可能时间 就是完成某道工序的最可能完成时间 m 悲观时间 最悲观的时间就是工作进行不利所用时间 b 活动历时均值 或估计值 乐观估计 4 最可能估计 悲观估计 6 活动历时方差 悲观估计值 乐观估计值 6 用 PERT 公式计算出来的是完成某活动的平均工期 即

    2025年12月2日
    6
  • 火山引擎推出Data Agent评测体系,并发布《2025数据智能体实践指南》

    火山引擎推出Data Agent评测体系,并发布《2025数据智能体实践指南》

    2026年3月15日
    2
  • codeif idea_ps插件安装在什么位置

    codeif idea_ps插件安装在什么位置1、点击File->Settings->Plugins->设置->InstallPluginfromDisk2、选中MappingSearch.jar3、重启IDEA,在Help菜单下有个“MappingSearch映射搜索”选项表示安装成功此后就可以使用插件的变量名搜索功能,右键CodeIf,则会弹出许多适合的变量名。以后就不用头秃的想变量名问题了。附上jar包下载地址:https://download.csdn.net/download/qq_44752641/1

    2026年2月11日
    4
  • 设置div半透明

    设置div半透明DIV 半透明实现 使用 CSS 实现 DIV 成半透明效果 CSS 实现层与背景半透明效果 一 DIVCSS 半透明基础介绍 nbsp nbsp nbsp TOP 设置 DIV 半透明 CSS 代码 div filter alpha Opacity 80 moz opacity 0 5 opacity nbsp 0 5 nbsp 说明 1 filter 对 winIE 设置半透明滤镜效果 filter alpha

    2026年3月18日
    2
  • 字符串正则匹配leetcode_正则在线检验

    字符串正则匹配leetcode_正则在线检验原题链接给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a”输出:false解释:”a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa” p = “a*”输出:true解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是

    2022年8月8日
    9
  • pki密码技术_PKI体系管理

    pki密码技术_PKI体系管理HTTPS的诞生可先参考网络协议、HTTPS协议等文章明文传输对称加密“加密”和“解密”使用【相同的】密钥,如果密钥可以安全的传输,那么消息也应该可以安全的传输。非对称加密上述非对称加密与对称加密效果基本一样,如果公钥可以安全的传输,那么消息也应该可以安全的传输,接下来看看被劫持的情况。窃听者可以伪造服务器的公钥与客户端通讯,客户端以为是跟服务器通讯,其实是与窃听者在通讯。无论是对称加密还是非对称加密,都遗留了一个问题没有解决,那就是如何证明我们访问的网站就是我们

    2022年8月22日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号