Open(),Close()和Read()应用于Linuxpipe道文件描述符

Open(),Close()和Read()应用于Linuxpipe道文件描述符,第1张

概述Open(),Close()和Read()应用于Linuxpipe道文件描述

这可能是一个简单的问题,但我想确认我对这些function的理解 – 如果我完全错误的话,可能会澄清。

以下是发生了什么事情:

我有一个multithreading程序,使用unix pipe()函数通过pipe道传递数据。 基本上,两个线程可以写入pipe道(它们当然是同步的),只有一个线程可以从pipe道读取。

根据我的理解, read()命令将尝试从传递的文件描述符参数中读取x个字节,如果到达EOF ,它将返回0。

覆盖Appx.cs中的后台导航设置

过程分叉之后RAII对象会发生什么?

我需要使用路由套接字安装什么软件包?

静态/dynamic运行时链接

我想跟踪使用macros多参数始终为空的日志。 问题的c + +窗口

我写入pipe道的字节数是可变的,所以从pipe道读取时会有一些小的困难。 我相信我读了使用close(my_pipe_file_descriptor)在EOF抛出的地方。 如果是这样的话, read()会在返回EOF返回 – 这会很好。

如果我上面说的是正确的 – 关于close()和read()是如何工作的 – 我有一个问题。

如果我调用close(my_pipe_file_descriptor) ,pipe道是否被销毁,使得将来的调用open(my_pipe_file_descriptor)无效?

我希望这是有道理的。

什么是testing和testing驱动开发的良好在线介绍?

长时间运行的PHP进程陷入循环 – 包括strace输出

将MFC转换为QT'in-place'端口 – QWinWidget中的QDialog不能捕获Ctrl-X,Ctrl-V等

TabCtrl_InsertItem:我们是否需要保留文本的记忆?

C中的堆大小限制

对于close的问题,是的,它会破坏管道,你不能在关闭它的过程中使用它。 如果你想使用一个新的管道,你必须重新创建一个。 如果关闭管道的写入端,则读取端仍然有效,允许读取器读取,直到接收到所有数据。 最后一点意味着作者不必等到知道读者已经收到了所有的数据(通常不能这样做),而只需要写下它想要的任何数据,然后关闭管道的末端即可。

正如你对read功能的理解一样,它基本上是正确的。 您要求它读取一定数量的字节,并且会读取该字节数。 它可能读取较少,您必须检查返回的值,以确切了解它读取了多少。 这不仅适用于管道,也适用于套接字和文件。

我建议你阅读官方的POSIX引用 :

pipe

read

write

为了完整起见(尽管它不能用于打开或创建匿名管道):

open

如果你只是搜索一下,还有数以千计的如何使用管道的例子。

总结

以上是内存溢出为你收集整理的Open(),Close()和Read()应用于Linuxpipe道文件描述符全部内容,希望文章能够帮你解决Open(),Close()和Read()应用于Linuxpipe道文件描述符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1154742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存