本文简要介绍ruby语言中 IO.pipe
的用法。
用法
pipe → [read_io, write_io]
pipe(ext_enc) → [read_io, write_io]
pipe("ext_enc:int_enc" [, opt]) → [read_io, write_io]
pipe(ext_enc, int_enc [, opt]) → [read_io, write_io]
pipe(...) {|read_io, write_io| ... }
创建一对管道端点(相互连接)并将它们作为 IO
对象的二元素数组返回:[
read_io
、write_io
]
。
如果给定一个块,则调用该块并返回该块的值。 read_io
和 write_io
作为参数发送到块。如果 read_io 和 write_io 在块退出时没有关闭,则它们已关闭。即关闭 read_io 和/或 write_io 不会导致错误。
并非在所有平台上都可用。
如果将编码(编码名称或编码对象)指定为可选参数,则从管道中读取的字符串将使用指定的编码进行标记。如果参数是冒号分隔的两个编码名称“A:B”,则读取的字符串从编码A(外部编码)转换为编码B(内部编码),然后标记为B。如果指定了两个可选参数,则必须是编码对象或编码名称,第一个是外部编码,第二个是内部编码。如果指定了外部编码和内部编码,可选的散列参数指定转换选项。
在下面的示例中,两个进程关闭了它们不使用的管道末端。这不仅仅是一种化妆品。如果管道仍处于打开状态,则管道的读取端不会生成文件结束条件。在父进程的情况下,如果 rd.read
不首先发出 wr.close
,它将永远不会返回。
rd, wr = IO.pipe
if fork
wr.close
puts "Parent got: <#{rd.read}>"
rd.close
Process.wait
else
rd.close
puts "Sending message to parent"
wr.write "Hi Dad"
wr.close
end
产生:
Sending message to parent Parent got: <Hi Dad>
相关用法
- Ruby IO.pid用法及代码示例
- Ruby IO.pread用法及代码示例
- Ruby IO.pwrite用法及代码示例
- Ruby IO.pathconf用法及代码示例
- Ruby IO.print用法及代码示例
- Ruby IO.pos用法及代码示例
- Ruby IO.popen用法及代码示例
- Ruby IO.pos =用法及代码示例
- Ruby IO.puts用法及代码示例
- Ruby IO.putc用法及代码示例
- Ruby IO.eof用法及代码示例
- Ruby IO.read用法及代码示例
- Ruby IO.fileno用法及代码示例
- Ruby IO.raw用法及代码示例
- Ruby IO.readlines用法及代码示例
- Ruby IO.to_i用法及代码示例
- Ruby IO.self << object用法及代码示例
- Ruby IO.tty?用法及代码示例
- Ruby IO.close_write用法及代码示例
- Ruby IO.write_nonblock用法及代码示例
- Ruby IO.set_encoding_by_bom用法及代码示例
- Ruby IO.syswrite用法及代码示例
- Ruby IO.close_read用法及代码示例
- Ruby IO.stat用法及代码示例
- Ruby IO.ungetc用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 IO.pipe。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。