NSTask et StandardOutput
tablier
Membre
Je suis en train d'améliorer mon logiciel AEv-Utility (AEvU) en utilisant un NSTask asynchrone.
AEvU lance une application qui génère ou reçoit des AppleEvents. Les variables d'environnement du NSTask valident le "AppleEvents Logging" et je récupère bien de manière asynchrone les représentations des AppleEvents qui transitent entre la source et la cible. Pas de problème là . Extrait du code:
Ce que je trouve curieux: la console reçoit également les données qu'AEvU reçoit. Je ne comprend pas pourquoi puisque la sortie standard est détournée vers le pipe de réception.
Une explication?
AEvU lance une application qui génère ou reçoit des AppleEvents. Les variables d'environnement du NSTask valident le "AppleEvents Logging" et je récupère bien de manière asynchrone les représentations des AppleEvents qui transitent entre la source et la cible. Pas de problème là . Extrait du code:
Avec:task = [[NSTask alloc] init];
if (environ!=nil)
[task setEnvironment:environ] ; // variable d'environnement
[task setStandardOutput: [NSPipe pipe]];
[task setStandardError: [task standardOutput]];
[task setLaunchPath: [arguments objectAtIndex:0]]; // chemin de l'exécutable
if ([arguments count]>1) // arguments s'il y en a
[task setArguments: [arguments subarrayWithRange: NSMakeRange (1, ([arguments count] - 1))]];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getData
name: NSFileHandleReadCompletionNotification object: task standardOutput] fileHandleForReading;
[[[task standardOutput] fileHandleForReading] readInBackgroundAndNotify];
[task launch];
Ce code est extrait de l'exemple ICI et modifié pour mon problème.NSDictionary environ = [NSDictionary dictionaryWithObjectsAndKeys: @1, @AEDebugSends, @1, @AEDebugReceives,nil] ;
NSArray arguments = [NSArray arrayWithObject:@chemin de l'exécutable Unix] ;
Ce que je trouve curieux: la console reçoit également les données qu'AEvU reçoit. Je ne comprend pas pourquoi puisque la sortie standard est détournée vers le pipe de réception.
Une explication?
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La sortie d'erreur ne sert, en fait, pas que pour les erreurs. À voir de ce côté là ?
J'ai essayé de mettre /bin/bash comme exécutable et "-c", "chemin logiciel à tester" comme arguments. ça ne change rien, j'ai toujours doublement des textes.