4

サンドボックスを有効にして、NSTaskで/ sbin/pingを使用します。

[task setLaunchPath:@"/sbin/ping"];
[task setArguments:[NSArray arrayWithObjects:@"-c10", iPAddress, nil]];

すべてがうまく機能し、期待どおりの出力が得られます。

また、NSTaskで/ usr / sbin/tracerouteを使用したいと思います。

[task setLaunchPath:@"/usr/sbin/traceroute"];
[task setArguments:[NSArray arrayWithObject:iPAddress]];

ただし、タスクは次のメッセージで終了します。NSTask:パス'/ usr / sbin / traceroute'のタスク作成に失敗しました:22、「引数が無効です」。一時的なプロセスを終了します。*同時にサンドボックスログ:deny forbidden-exec-sugid

pingでは機能するのにtracerouteでは機能しないのはなぜですか?そして、それをtracerouteで機能させるにはどうすればよいですか?

どうも!

4

1 に答える 1

4

Q1: ping と traceroute の比較 - 前者は特権のないプログラムで、後者は特権があり、root として実行されます。あなたのエラーは、ルートとしての実行がサンドボックスで許可されていないことを示していますが、当然のことです。

Q2: traceroute 機能が必要な理由を詳述したバグ レポートを Apple に提出し、サンドボックスでサポートされている方法を依頼してください。あなたが実際にサンドボックスを使用していることを考えると、おそらく登録済みの Apple 開発者であると思われるので、開発者フォーラムでも取り上げてください (バグ番号をリストしてください)。

于 2012-02-14T00:59:45.150 に答える