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