-1

プロセス内から標準エラー/出力パスを取得する方法はありますか? NSTask を試してみましstandardErrorたが、NSFileHandle が返され、パスが文字列として必要です。ありがとうございました!

ps StandardErrorPath は、システム起動時にプロセスを開始するために launchd によって使用される .plist に設定されます。プロセスは、目的 c で書かれたバンドルです。

4

1 に答える 1

1

いいえ、できません。厳密に言えば、OSで多くのハッカーを使用することはできますが、そうすべきではありません。標準ストリームのパスを決定し、パスを開いて書き込み/読み取りを行うべきではありません。

標準の入力/出力/エラーはファイルに関連するものではありません。これらは本質的にファイルハンドルに関連付けられていますが、必ずしもファイルシステム上のパスに関連付けられているとは限りません。これらはパスの概念を意図的に抽象化したものであるため、プログラムは実際のパスを気にせずに常に標準の入出力/エラーに書き込むことができます。このように、パスの選択は、プログラム自体ではなく、プログラムのユーザー側で行われます。

launchdそれが見たときに何をするかは、StandardErrorPath概念的にはこれです:

  1. 初期化手順の一部として、でパスを開き、StandardErrorPathファイル記述子を取得します。
  2. アプリを起動し、そのファイル記述子をアプリの「標準エラーファイル記述子」に設定します。

アプリは、標準エラーに書き込みたい場合、標準エラーのファイルパスを決定して書き込むのではなく、標準エラーに 書き込む必要があります。

于 2010-05-20T18:49:18.207 に答える