これが私のコードです。myCmd=@"cd /\nls -l\n"
またはを設定するとmyCmd=@"ls -l\n"
問題ありません。ただし、を設定するmyCmd=@"cd /\n"
と、プログラムは行if ((output =[[outPipe fileHandleForReading] availableData]) && [output length])
で停止し、デバッグ情報は何も出力されません。
"cd /"
cmdが他のシェルコマンドと異なるかどうかはわかりません。アドバイスをいただけますか?
NSData *inputData = [myCmd dataUsingEncoding:NSUTF8StringEncoding];
NSPipe *inPipe = [NSPipe pipe];
NSFileHandle *fh = [inPipe fileHandleForWriting];
[fh writeData: inputData];
NSPipe *outPipe = [NSPipe pipe];
//NSPipe *errPipe = [NSPipe pipe];
NSTask *task = [[NSTask alloc] init];
[task setStandardInput:inPipe];
[task setStandardOutput:outPipe];
[task setStandardError:outPipe];
[task setLaunchPath:@"/bin/sh"];
NSArray *args = [NSArray arrayWithObject:@"-s"];
[task setArguments:args];
[task launch];
NSData *output;
NSString *string;
if ((output =[[outPipe fileHandleForReading] availableData]) && [output length])
{
string = [[NSString alloc] initWithFormat:@"%.s", [output bytes]];
}
NSLog(@"%@", string);