私の PHP スクリプトがサブプロセスを実行するとき ( 、exec()
、system()
、passthru()
、popen()
などの関連する関数のいずれかを使用して、proc_open()
忘れてしまった可能性があります)、プロセスが開始する環境変数の値を制御できます (スクリプトの環境自体を変更することにより、または、少なくとも の場合はproc_open()
、目的の環境を引数として渡すことによって)。しかし、スクリプトがプロセスが終了した環境の状態を取得する方法はありますか (つまり、プロセスが環境を変更する可能性があるため、スクリプトがそれらの変更を追跡できるようにしたいのです)。getenv()
スクリプトの環境はサブプロセスによって変更されないため、使用しても意味がありません。これを行うことができるかどうか、およびその方法に関するアイデアはありますか?
質問する
43 次
1 に答える
0
だから、私はそれが好きではありませんが、これが私が思いついたものです: 環境全体を1行として出力するスクリプトを作成し、呼び出したプロセスの直後にそれを呼び出しています。同じコマンドの。その後、出力を分析し、最後の行から環境を抽出し、元のプロセスからの出力を処理するために破棄します。
これを実装するには多くのオプションがあります。私がやったことは、次の行に沿っています。
1) Python スクリプトを作成し、名前を付けます。たとえばprintenv
、次のようになります。
#!/usr/bin/python2.7
import os
print os.environ
2) を呼び出す代わりに、自分のプロセスを呼び出す<some command>
とき<some command> && printenv
。
print
もちろん、スクリプトは Python である必要はなく、環境を Python の形式で出力する必要もありません。(しかし、この形式はかなり便利で、たとえば JavaScript 割り当てに渡すことができます。)
于 2012-08-28T15:01:34.217 に答える