2012-12-19 12 views
6

Ich muss eine Kommunikation zwischen zwei Threads mithilfe von NSPipe-Kanälen realisieren, das Problem ist, dass ich Terminalkommando nicht durch Angabe dieser Methoden aufrufen muss.Kommunikation zwischen Prozess mit NSPipe, NSTask

[task setCurrentDirectoryPath:@"....."]; 
[task setArguments:]; 

Ich brauche nur einige Daten

NSString * message = @"Hello World"; 
[stdinHandle writeData:[message dataUsingEncoding:NSUTF8StringEncoding]]; 

und auf der anderen Thread schreiben Diese Nachricht kann

 NSData *stdOutData = [reader availableData]; 
NSString * message = [NSString stringWithUTF8String:[stdOutData bytes]]; //My Hello World 

Zum Beispiel solche Dinge in C# erhalten leicht mit NamedPipeClientStream erfolgen, NamedPipeServerStream-Klassen, in denen Pipes nach ID-Zeichenfolge registriert werden.

Wie erreicht man es in Objective-C?

+0

Ist Ihre Frage zu zwei Threads innerhalb desselben Prozesses oder zu separaten Prozessen, die über eine Pipe kommunizieren? –

+0

Es ist über zwei Threads, die über eine Leitung kommunizieren – Andrew

+0

Wie können separate Prozesse erreichen, die über eine Leitung kommunizieren? – vadivelu

Antwort

3

Wenn ich Ihre Frage richtig verstehe, können Sie einfach eine NSPipe erstellen und ein Ende zum Lesen und ein Ende zum Schreiben verwenden. Beispiel:

+0

danke! Es funktioniert super – Andrew

+0

@Andrew: Sie sind willkommen, ich bin froh, dass es geholfen hat. –

+1

ok. Ich bin verwirrt. Wie funktioniert das, damit zwei Apps miteinander kommunizieren können? Und wo legt die Pipe eine Art Bezeichner fest, um sie zwischen Apps zu teilen? Wie viele Apps könnten ein Pipe-Set verwenden? –