2016-07-06 2 views
1

Я хочу использовать старый добрый FIFO для передачи данных в другую часть мой собственный Приложение iOS. Я посмотрел на dispatch_io_create_with_path, но хочу, чтобы другая сторона могла читать данные с помощью обычного чтения(). Можно ли использовать файл FIFO? как?Возможно ли создать и использовать файл FIFO в iOS? (ObjC)

Я попытался следующий код в Xcode7 ObjC (путь указывает на документы директории + имя файла):

res = mkfifo(path, 0x777); 

int fd; 
fd = open(path, O_WRONLY); 
write(fd, "test", 5); 
close(fd); 

mkfifo() возвращает 0, но с открытым() терпит неудачу с -1. Интересно, что если я попробую open() с программой «O_RDONLY», так что что-то происходит там.

+0

Почему вы хотите сделать это через файл? Вы посмотрели этот http://stackoverflow.com/questions/13129233/objective-c-manual-array-fifo-queue? Как он отличается от того, что вы хотите/нуждаетесь? – Losiowaty

+0

Не уверен, что это полезно, но поиск файлов FIFO я нашел «Однако он должен быть открыт на обоих концах одновременно, прежде чем вы сможете приступить к выполнению каких-либо операций ввода или вывода. Открытие FIFO для чтения обычно блокирует, пока какой-либо другой процесс не откроет тот же FIFO для записи, и наоборот. – Putz1103

+0

@ Losiowaty Обратите внимание, что я спрашиваю о «другом FIFO». Not First In First Out, но тип файла, поддерживаемый Unix/Linux/Mac OS X. Я хочу передать данные в статическую библиотеку, которая хочет «filePath», фактически не записывая данные в файл. Я не ожидаю поиска() – gheni4

ответ

2

omg не может поверить, что я потратил впустую часы на этот ... ну вот он: Ошибка в часть «0x777». Должно быть «0777». После исправления этого - FIFO отлично работает для меня (iOS 9.2.1).

+0

Какой путь вы установили здесь? Я думал, что в iOS файловая система изолирована. –

+0

@gran_profaci Мне пришлось передавать данные в статическую библиотеку, которая была частью моего проекта, который ожидает файловую панель, но я не хотел записывать все эти данные в файл. Все происходило локально в одной песочнице, поэтому проблем не было. Я не помню точный путь, но это было обычное имя файла в «Документах», – gheni4

Смежные вопросы