2016-07-01 68 views
0

我有幾個fds(從Process.spawn_async_with_pipes獲得),我想要讀取和寫入。現在我看到有多種方式可以這樣做:Vala中的文件輸入/輸出(IOChannel vs FileStream vs IOStream)

  • 使用IOChannel.unix_new
  • 使用FileStream.fdopen
  • 使用UnixInputStreamUnixOutputStream

是這些API之間的差異和哪一個我應該採取?

+0

相關:https://stackoverflow.com/questions/20846511/read-write-file-pipes-在-VALA-巧舌如簧 –

回答

3

IOChannel

的FileStream

  • 未GLib的/ GIO的一部分便攜式支撐
  • 綁定到標準C庫(libc) FOPEN,FCLOSE,FWRITE等

UnixInputStream/UnixOutputStream

  • Part of GIO(GIO-UNIX準確地說,它僅針對Unix據我所知)
  • 支持InputStream和OutputStream接口
  • 適合抽象不同類型的流
  • 還有Win32InputStream和Win32OutputStream用於處理GIO中的Windows文件句柄

所以這取決於幾個因素,使用哪一個:

  • 你需要非Unix的支持?
  • 你想使用GIO抽象接口嗎?
  • 你需要用文件中工作*
  • 你需要使用Windows文件處理工作