2

NSTask を呼び出すアプリがあり (NSTask とアプリのコードを作成しました)、NSTask は、行をコンソールに書き出す必要がある場所で NSLog を呼び出します。

問題は、NSTask からのコンソール メッセージが表示されることです。その後、呼び出し元のプロセスから出力される同じメッセージが二重ヘッダーで表示されます...

5/16/11 5:50:01 PM  theNSTask[7934] BLAH BLAH BLAH 
[0x0-0x256256].com.someid[7505] 2011-05-16 17:50:01.708 theNSTask[7934:903] BLAH BLAH BLAH

目的の出力を読み取るだけで非常に混乱します(BLAH BLAH BLAH)。この問題を解決する魔法の設定はありますか?

ありがとう、

――トム

NSTask* task = [[NSTask alloc] init];
NSString* path = [[NSBundle mainBundle] pathForAuxiliaryExecutable:@"theNSTask"];
[task setLaunchPath:path];
NSMutableArray* arguments = [NSMutableArray array];
// get the dict as base64 string (start with binary plist):
NSString* base64Dict = [[self class] base64FromDictionary:message];
    [arguments addObject:base64Dict];
    [task setArguments:arguments];
[task launch];

[self.runningTasks addObject:task];
[task release];
4

1 に答える 1

6

私の推測では、タスクはメッセージをコンソールとその標準出力に直接記録しています。これは、デフォルトでは、アプリがコンソールに送信している親プロセスの標準出力と同じストリームです。

/dev/nullそれが本当なら、タスクの標準出力を次のように設定することで修正できるはずです。

NSFileHandle *nullFileHandle = [NSFileHandle fileHandleWithNullDevice];
[task setStandardOutput:nullFileHandle];
[task setStandardError:nullFileHandle];
于 2011-05-17T00:35:35.953 に答える