Cocoaはさっぱり!
■ このスレッドは過去ログ倉庫に格納されています
0451449
02/05/02 01:15ID:LMjV3ScPどんな処理をやってるか分からないんだが、、、
pipeをIn/Out別々に作っているか、出力をちゃんと行っているかどうかをチェックしてみては。
とりあえず↓のようなコードでスクリプトを実行させたらうまくいったので参考にして下さい。
- (IBAction)action:(id)sender {
NSTask *task = [[NSTask alloc] init];
NSPipe *pipe1 = [NSPipe pipe];
NSPipe *pipe2 = [NSPipe pipe];
[task setStandardOutput:pipe1];
[task setStandardInput:pipe2];
[task setLaunchPath:@"/usr/bin/perl"];
[task launch];
[self write:[pipe2 fileHandleForWriting]];
//別Threadにした方がいいかも
[self read:[pipe1 fileHandleForReading]];
[task release];
}
- (void)write:(NSFileHandle *)handle {
[handle writeData:
[[inTextView string] dataUsingEncoding:NSASCIIStringEncoding
allowLossyConversion:YES]];
[handle closeFile];
}
- (void)read:(NSFileHandle *)handle {
NSData *inData;
while ((inData = [handle availableData]) && [inData length]) {
NSString *str = [[NSString alloc] initWithData:inData
encoding:NSASCIIStringEncoding];
if ([outTextView string] != nil) {
str = [[outTextView string] stringByAppendingString:str];
}
[outTextView setString:str];
}
}
■ このスレッドは過去ログ倉庫に格納されています