gpt4 book ai didi

perl - `read` 和 `sysread` 有什么区别?

转载 作者:行者123 更新时间:2023-12-03 12:13:59 25 4
gpt4 key购买 nike

read sysread 有非常相似的文档。两者有什么区别?

最佳答案

关于 read :

  • read支持 PerlIO 层。
  • read适用于任何 Perl 文件句柄[1]。
  • read缓冲区。
  • read以 8 KiB [2] 的固定大小块从系统获取数据。
  • read如果可用的数据少于请求的数据,可能会阻塞[3]。

  • 关于 sysread :
  • sysread不支持 PerlIO 层(这意味着它需要一个原始的 a.k.a. 二进制句柄)。
  • sysread仅适用于映射到系统文件句柄/描述符[4] 的 Perl 文件句柄。
  • sysread不缓冲。
  • sysread执行单个系统调用。
  • sysread如果可以返回数据,则立即返回,即使数据量小于请求的量。

  • 总结和结论:
  • read可用于任何 Perl 文件句柄,而 sysread仅限于映射到系统文件句柄/描述符的 Perl 文件句柄。
  • read select 不兼容[5],而 sysreadselect 兼容.
  • read可以为您执行解码,而 sysread要求您自己进行解码。
  • read对于非常小的读取应该更快,而 sysread对于非常大的读取应该更快。


  • 笔记:
  • 例如,这些包括绑定(bind)的文件句柄和使用 open(my $fh, '<', \$var) 创建的文件句柄。 .
  • 在 5.14 之前,Perl 读取 4 KiB block 。从 5.14 开始,在构建 perl 时可以配置 block 的大小。 , 默认为 8 KiB。
  • 根据我的经验,read从纯文件读取时将准确返回请求的数量(如果可能),但从管道读取时可能返回较少。这些结果决不能保证。
  • fileno 为这些返回一个非负数。例如,这些包括从普通文件、管道和套接字读取的句柄,但不包括 [1] 中提到的那些。
  • 我指的是由 IO::Select 调用的 4 参数。 .
  • 关于perl - `read` 和 `sysread` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36315124/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com