2016-07-01 46 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文件处理工作