有沒有辦法在Unix中更改另一個進程的環境變量?在Unix上,有沒有辦法讓一個進程可以改變另一個進程的環境變量(假設它們都是由同一個用戶運行)?一般的解決方案是最好的,但如果沒有,那么一個人是另一個人的孩子的具體情況怎么樣?編輯:通過gdb怎么樣?
3 回答

長風秋雁
TA貢獻1757條經驗 獲得超7個贊
通過gdb:
(gdb) attach process_id(gdb) call putenv ("env_var_name=env_var_value")(gdb) detach
這是一個非常討厭的黑客攻擊,當然應該只在調試場景的環境中完成。

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
你可能在技術上可以做到(見其他答案),但它可能對你沒有幫助。
大多數程序都會期望在啟動后無法從外部更改env變量,因此大多數人可能只是在啟動時讀取他們感興趣的變量并基于此進行初始化。因此,之后更改它們不會產生任何影響,因為程序永遠不會重新讀取它們。
如果您將此作為一個具體問題發布,您應該采取不同的方法。如果只是出于好奇:好問題:-)。

狐的傳說
TA貢獻1804條經驗 獲得超3個贊
基本上沒有。如果你有足夠的權限(root或其左右)并且在/ dev / kmem(內核內存)周圍進行了調整,并且你對進程的環境進行了更改,并且之后進程實際上重新引用了環境變量(即進程)還沒有拿過env var的副本并且沒有使用那個副本),那么也許,如果你是幸運和聰明的,風向正確的方向吹,月亮的相位是正確的,也許,你可能會有所成就。
- 3 回答
- 0 關注
- 522 瀏覽
添加回答
舉報
0/150
提交
取消