Jak używać poleceń NSTask do uruchamiania terminala w pętli w spójnym środowisku?

Chcę użyć NSTask do symulacji terminala, aby uruchamiać polecenia. Kody w następujący sposób. Może uzyskać wejście w pętli i zwrócić wyjście procesu.

int main(int argc, const char * argv[])
{
  @autoreleasepool {      
    while (1) {
        char str[80] = {0};
        scanf("%s", str);
        NSString *cmdstr = [NSString stringWithUTF8String:str];

        NSTask *task = [NSTask new];
        [task setLaunchPath:@"/bin/sh"];
        [task setArguments:[NSArray arrayWithObjects:@"-c", cmdstr, nil]];

        NSPipe *pipe = [NSPipe pipe];
        [task setStandardOutput:pipe];

        [task launch];

        NSData *data = [[pipe fileHandleForReading] readDataToEndOfFile];

        [task waitUntilExit];

        NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@", string);

    }
}

Moje pytanie brzmi: kiedy pętla jest zakończona, działające środowisko przywraca stan inicjalizacji. Na przykład domyślną ścieżką do uruchomienia jest/Users/applei uciekamcd / zmienić ścieżkę do/, a następnie uruchompwd, to zwraca/Users/apple niż/.

Więc jak mogę korzystaćNSTask całkowicie symulować terminal?

questionAnswers(1)

yourAnswerToTheQuestion