여기가 내 코드입니다. [email protected]"cd /\nls -l\n"
또는 [email protected]"ls -l\n"
으로 설정하면 문제가 없습니다. 그러나 [email protected]"cd /\n"
으로 설정하면 프로그램은 행 if ((output =[[outPipe fileHandleForReading] availableData]) && [output length])
에서 작동하지 않으며 디버그 정보 출력이 없습니다.NSTask를 사용하여 쉘 명령을 실행할 때 NSPipe를 통해 출력되는 이상한 문제
"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);
그러면 어떻게 처리 할 수 있습니까? 조언 좀 해줄 수 있니? –
@Tom Jacky : 나는 당신에게 몇 가지 제안을했다. – JeremyP