Fork () auf dem iPhone

Erlaubt das iPhone SDKfork() undpipe() funktioniert das traditionelle Unix? Ich kann sie scheinbar nicht zum Laufen bringen.

Bearbeite

Problem gelöst. Hier biete ich eine Lösung für alle, die auf ähnliche Probleme wie ich stoßen. Die Antworten in diesem Thread haben mich inspiriert.

Auf dem iPhone gibt es keine Möglichkeit, einen Prozess abzweigen. Es ist jedoch nicht unmöglich, Rohrleitungen zu implementieren. In meinem Projekt erstelle ich einen neuen POSIX-Thread (lesen Sie dazu die Dokumentation von Apple). Der untergeordnete Thread teilt einen von pipe () erstellten Dateideskriptor mit dem übergeordneten Thread. Unter- und übergeordnete Threads können über Pipes kommunizieren. Zum Beispiel mein Kind Thread dup2 () fd [1] auf seine Standardausgabe. So kann jede Standardausgabe im übergeordneten Thread abgefangen werden. Ähnlich wie fd [0] und Standardeingabe.

Pseudocode (Ich habe den Code nicht zur Verfügung, aber Sie haben die Idee):

int fd[2];
pipe(fd);
create_posix_thread(&myThread, fd);
char buffer[1024];
read(fd[0], buffer, 1024);
printf("%s", buffer); // == "Hello World"    

void myThread(int fd[])
{
  dup2(fd[1], STANDARD_OUTPUT);
  printf("Hello World");
}

Die Strategie ist sehr praktisch, wenn Sie eine Drittanbieter-Bibliothek in Ihrer iPhone-Anwendung verwenden möchten. Ein Problem ist jedoch, dass das Standard-Debugging mit printf () nicht mehr verfügbar ist. In meinem Projekt habe ich einfach alle Debug-Ausgaben auf Standardfehler umgeleitet, XCode würde die Ausgaben auf seiner Konsole anzeigen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage