本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。