加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

有没有办法使用Perl和Linux或Solaris环境读取其他进程的环境变量

发布时间:2020-12-15 22:01:55 所属栏目:大数据 来源:网络整理
导读:在Perl中,我需要读取其他进程的环境. 脚本正在以root身份运行 特权. 脚本将会 在Linux和Solaris中运行. 我想要一个大多数平台无关的解决方案,至少在Linux和Solaris之间.在Linux中,检查/ env / proc_id / environ可以得到我的答案. 我想避免分叉.我已经有一个
在Perl中,我需要读取其他进程的环境.

>脚本正在以root身份运行
特权.
>脚本将会
在Linux和Solaris中运行.
>我想要一个大多数平台无关的解决方案,至少在Linux和Solaris之间.在Linux中,检查/ env /< proc_id> / environ可以得到我的答案.
>我想避免分叉.我已经有一个解决方案,“/usr/ucb / ps -auxwwwe $pid”

有任何想法吗?

解决方法

对于Solaris,您可以尝试使用 procfs module from CPAN.即使这个模块仍然很年轻,这个引用听起来很有希望:

Brian Farrell sent a very useful patch which handles
inspection of argv and environment of processes
other than the currently running process.

我想象这可能只是最初的环境(就像linux下的environ文件),但这似乎是你想要的?

否则,虽然我看到你说你不想分叉,但一个简单的解决方案可能会是曲柄?20行的C,以产生一个小程序,只是在Solaris环境中排除了与Linux环境文件完全相同的环境.我已经有了非常相似的东西.如果你有兴趣,我可以发表.

编辑(读取OpenSolaris pargs.c之后):环境变化时,在Solaris下重新分配环境缓冲区,因此psinfo指针可能无效.对于防弹解决方案,您需要追踪_environ.这可能比你需要的更麻烦… pargs -e< pid>可能是对UCB ps(1)更好的替代,如果你做叉路线,但是.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读