9

Perl では、他のプロセスの環境を読み取る必要があります。

  • スクリプトは root 権限で実行されています。
  • スクリプトは、Linux と Solaris の両方で実行されます。
  • 少なくとも Linux と Solaris の間では、ほとんどプラットフォームに依存しないソリューションが必要です。Linux では、/env/<proc_id>/environ を調べると答えが得られます。
  • フォークする必要は避けたいです。「/usr/ucb/ps -auxwwwe $pid」をフォークするソリューションが既にあります

何か案は?

4

6 に答える 6

12

Linux では/proc/<pid>/environ、プロセスの作成時に渡された環境変数が疑似ファイルに含まれているようです。十分な権限があれば、それらを読むことができます。

起動後のプロセス環境の変更を追跡していないようです。

これは、求めているものを取得するには、プロセスのメモリ ダンプを分析する必要があることを示唆しています。

トリッキー。

于 2009-02-06T01:58:10.883 に答える
11

GNU 'binutils' パッケージには、 という CLI ユーティリティが含まれていますstrings。詳細については、 http://www.gnu.org/software/binutils/を参照してください。

strings /proc/pid/environ- と同じように、環境変数の素敵なリストを出力しますenv

于 2009-11-21T23:51:38.767 に答える
0

/proc/[pid]/cwdLinux では、シンボリック リンクを解決するだけで十分な場合があります。 procfs(5)を参照してください。

于 2014-12-27T20:40:49.000 に答える