2016-07-01 3 views
0

У меня есть несколько fds (полученных от Process.spawn_async_with_pipes), от которых я хочу читать и писать. Теперь я увидел, что есть несколько способов сделать это:файл ввода/вывода в Vala (IOChannel vs FileStream vs IOStream)

  • с использованием IOChannel.unix_new
  • с использованием FileStream.fdopen
  • с использованием UnixInputStream и UnixOutputStream

В чем разница между этим API, и какой из них я должен брать?

+0

Связанный: https://stackoverflow.com/questions/20846511/read-write-file-pipes- в-Вал-БОЙКИЙ –

ответ

3

IOChannel

  • Part of GLib
  • Портативная поддержка использования файлов, каналов и сокетов

FileStream

  • Не является частью GLib/ПИБ
  • Персональной к стандартным C библиотека (libc) Еореп, fclose, FWRITE и т.д.

UnixInputStream/UnixOutputStream

  • Part of GIO (Gio-UNIX, чтобы быть точным, это Unix только, насколько я знаю)
  • Поддерживает InputStream и OutputStream интерфейсы
  • Хорошо для абстракции различных типов потоков
  • Там также Win32InputStream и Win32OutputStream для работы с файлом Windows, обрабатывает в ПИБ

Так это зависит от нескольких факторов, один для использования:

  • ли вам понадобится обычная поддержка Unix?
  • Вы хотите использовать абстрактные интерфейсы GIO?
  • вам нужно работать с файловыми Do *
  • Нужно ли вам работать с файлом Windows, обрабатывает
Смежные вопросы