1

当我的 PHP 脚本运行一个子进程(使用任何相关函数,例如exec(), system(), passthru(), popen(), proc_open(), 以及我忘记的其他函数)时,我可以控制进程开始的环境变量的值(或者通过更改脚本的环境本身,或者,至少在 的情况下proc_open(),通过将所需的环境作为参数传递)。但是有没有办法让我的脚本获取进程完成的环境状态(即进程可能会更改环境,我希望我的脚本能够跟踪这些更改)。使用getenv()是无用的,因为脚本的环境不会被子进程改变。关于这是否可以做到以及如何做到的任何想法?

4

1 回答 1

0

所以,我不喜欢它,但这就是我想出的:我编写了一个脚本,将整个环境输出为一行,我在调用过程之后立即调用它,作为一部分相同的命令。之后,我可以分析输出,从最后一行中提取环境,然后丢弃它,以便处理原始进程的输出。

有很多选项可以实现这一点。我所做的大致如下:

1) 创建一个 Python 脚本,命名它,例如printenv,它看起来像这样:

#!/usr/bin/python2.7
import os
print os.environ

2)在调用我的流程时,而不是<some command>我调用<some command> && printenv.

当然,脚本不必是 Python 的,也不必以 Python 的print格式输出环境。(但这种格式相当方便,例如可以传递给 JavaScript 赋值。)

于 2012-08-28T15:01:34.217 回答