當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby IO.pipe用法及代碼示例


本文簡要介紹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_iowrite_io ]

如果給定一個塊,則調用該塊並返回該塊的值。 read_iowrite_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-lang.org大神的英文原創作品 IO.pipe。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。