0

/usr/bin/すべてのコマンドのディレクトリを見つけることができる場所はありますか? iPhone が技術的に NSTask をサポートしていないことは知っていますが、これは教育目的であるため、NSTask.h をインポートしました。実行すると正常に動作します/usr/bin/calが、うまくいかず、/usr/bin/ls理由がわかりません。

*注:試してみ/usr/bin/whereis lsましたが、「パスが見つかりません」というエラーが表示されます

これは動作する私のコードです:

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/cal"];  //@"/usr/bin/ls" produces cannot find path error

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

NSFileHandle *file;
file = [pipe fileHandleForReading];

[task launch];

NSData *data;
data = [file readDataToEndOfFile];

NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

label.numberOfLines=0;
label.text = string;

[label sizeToFit];

[string release];
[task release]; 
4

1 に答える 1

1

iOS は基本的に Mac OS X であり、これは基本的に Darwin であり、基本的に Unix であるため、Mac/Darwin/Unix システムでピークを取る必要があります。

ターミナル (OSX) では次のようになります。

$ which ls
/bin/ls
$

これで、このコマンドを (読み取りと実行のアクセス権を持つ) 任意のディレクトリで実行して、その内容を取得できます。そのために使用できますNSTask

$ /bin/ls /bin
(directory content of /bin)
...
$ /bin/ls /usr/bin
(directory content of /usr/bin)
...

ジェイルブレイクされていない iDevice でこれが何をもたらすかはわかりません。

于 2012-07-26T21:48:55.260 に答える