私は次のようなコードを持っています、それは大丈夫です、しかし私はそれについて2つの質問があります。
1)@ "ls --l"などの不正なパラをshに割り当てると、 outStringはnullになります。つまり、「ls:-:そのようなファイルまたはディレクトリはありませんls:l:そのようなファイルまたはディレクトリはありません」というエラー警告をキャプチャできません。どうすれば対処できますか?
2)この関数を実装するにはどうすればよいですか:アプリの現在のディレクトリが"/ user / Doc"で、sh = @ "cd /"を実行した後、sh = @ "ls -l"を実行して、次のループの「/」ディレクトリ。ただし、新しいループが開始されると、現在のディレクトリは「/ user/Doc」に戻ります。最後のループのタスク環境を維持するにはどうすればよいですか?
さらに、ターミナルで直接作業するのと同じように、「/ bin / sh」を実行するための永続的なタスクを継続できますか?
NSString *sh = @"ls -l";
while(sh != @"end"){
NSTask *shData = [[NSTask alloc] init];
[shData setLaunchPath: @"/bin/sh"];
NSArray *args;
args = [NSArray arrayWithObjects: @"-c", sh, nil];
[shData setArguments: args];
NSPipe *myPipe;
myPipe = [NSPipe pipe];
[shData setStandardOutput: myPipe];
[shData setStandardInput:[NSPipe pipe]];
NSFileHandle *file;
file = [myPipe fileHandleForReading];
[shData launch];
NSData *data1;
data1 = [file readDataToEndOfFile];
NSString *outString;
outString = [[NSString alloc] initWithData: data1 encoding: NSUTF8StringEncoding];
NSLog(@"%@",outString);
}