2016-07-06 88 views
1

我想使用良好的舊FIFO來傳遞數據到我自己的 iOS應用程序的另一部分。我查看了dispatch_io_create_with_path,但我希望另一端能夠使用純read()讀取數據。有沒有可能使用FIFO文件?怎麼樣?是否可以在iOS中創建和使用FIFO文件? (ObjC)

我試圖在Xcode7 ObjC下一個代碼(路徑指向文檔目錄+文件名):))

res = mkfifo(path, 0x777); 

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

mkfifo(返回0但打開(失敗,-1。有趣的是,如果我嘗試打開()與'O_RDONLY'程序正在等待,所以有什麼事情發生在那裏..

+0

爲什麼你想通過文件來做到這一點?你看過這個http://stackoverflow.com/questions/13129233/objective-c-manual-array-fifo-queue?它與你想要的/需要的有什麼不同? – Losiowaty

+0

不知道它是否有用,但查找我找到的FIFO文件'但是,它必須在兩端同時打開,然後才能繼續對其執行任何輸入或輸出操作。打開一個FIFO用於正常讀取塊,直到某個其他進程打開相同的FIFO進行寫入,反之亦然。' – Putz1103

+0

@Losiowaty請注意我正在詢問'其他FIFO'。不是先進先出,而是Unix/Linux/Mac OS X支持的文件類型。我希望將數據傳遞給需要'filePath'的靜態庫,而不實際將數據寫入文件。我不期望任何seek() – gheni4

回答

2

omg不能相信我浪費了一小時在那一個...以及這裏是: 錯誤是「0x777」部分。應該是「0777」。確定後--FIFO對我來說工作正常(iOS 9.2.1)。

+0

你在這裏設置了什麼路徑?我認爲在iOS中,文件系統已經被沙箱化了。 –

+0

@gran_profaci我不得不將數據傳遞給靜態庫,該庫是我的項目的一部分,它需要一個filePath,但我不想將所有數據寫入文件。一切都發生在同一個沙箱的本地,所以沒有問題。我不記得確切的路徑,但它是'文檔'中的規則文件名 – gheni4

相關問題