2016-07-06 5 views
1

Ich möchte guten alten FIFO verwenden, um Daten an einen anderen Teil von meine eigene iOS-Anwendung zu übergeben. Ich schaute auf dispatch_io_create_with_path, aber ich möchte, dass die andere Seite in der Lage ist, Daten mit plain read() zu lesen. Ist es möglich, FIFO-Datei zu verwenden? Wie?Ist es möglich, FIFO-Datei in iOS zu erstellen und zu verwenden? (ObjC)

habe ich versucht nächsten Code in Xcode7 ObjC (Pfad auf Dokumente dir + Dateiname):

res = mkfifo(path, 0x777); 

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

mkfifo() 0 zurück, aber open() scheitert mit -1. Interessanterweise, wenn ich offen versuchen() mit ‚O_RDONLY‘ Programm wartet so ist etwas da drüben passiert ..

+0

Warum möchten Sie es über eine Datei tun? Haben Sie sich diese http://stackoverflow.com/questions/13129233/objective-c-manual-array-fifo-queue angeschaut? Wie unterscheidet es sich von dem, was Sie wollen/brauchen? – Losiowaty

+0

Nicht sicher, ob es hilfreich ist, aber FIFO-Dateien nachschlagen, die ich gefunden habe. Allerdings muss es an beiden Enden gleichzeitig geöffnet sein, bevor Sie mit den Eingabe- oder Ausgabevorgängen fortfahren können. Öffnen eines FIFOs zum Lesen von normalen Blöcken, bis ein anderer Prozess den gleichen FIFO zum Schreiben öffnet, und umgekehrt. – Putz1103

+0

@Losiowaty Bitte beachten Sie, dass ich nach dem "anderen FIFO" frage. Nicht First In First Out, sondern ein Dateityp, der von Unix/Linux/Mac OS X unterstützt wird. Ich möchte Daten an eine statische Bibliothek übergeben, die "filePath" haben möchte, ohne Daten in eine Datei zu schreiben. Ich erwarte keine Suche() – gheni4

Antwort

2

omg nicht glauben kann ich Stunden auf, dass man verschwendet ... naja hier ist es: Der Fehler ist in der "0x777" Teil. Sollte "0777" sein. Nachdem ich das behoben habe, funktioniert FIFO für mich (iOS 9.2.1).

+0

Welchen Pfad haben Sie hier festgelegt? Ich dachte in iOS das Dateisystem ist Sandkasten weg. –

+0

@gran_profaci Ich musste Daten an eine statische Bibliothek übergeben, die Teil meines Projekts war, die einen Dateipfad erwartet, aber ich wollte nicht alle diese Daten in eine Datei schreiben. Alles passierte lokal in der gleichen Sandbox, also gab es kein Problem. Ich erinnere mich nicht an den genauen Pfad, aber es war regulärer Dateiname in den 'Dokumenten' – gheni4

Verwandte Themen