Environment-Variables

改變正在執行的程序的環境

  • July 24, 2020

怎麼可能改變env已經執行的程序中的某些變數,例如通過/proc/PID/environ?That “file” is read-only.

需要更改或取消設置長時間執行的批處理作業的 DISPLAY 變數而不殺死它。

如果沒有討厭的 hack,你就無法做到這一點 - 沒有 API,沒有辦法通知程序它的環境已經改變(因為這實際上是不可能的)。

即使您確實設法做到了,也無法確定它會產生任何影響-該過程很可能已經記憶體了您嘗試戳的環境變數(因為應該沒有任何東西可以更改它)。

如果您確實想這樣做,並且準備在出現問題時收拾殘局,則可以使用調試器。參見例如這個 Stack Overflow 問題:

有沒有辦法改變另一個程序的環境變數?

本質上:

(gdb) attach process_id
(gdb) call putenv ("DISPLAY=your.new:value")
(gdb) detach

您可以嘗試呼叫的其他可能功能是setenvunsetenv

請務必記住,如果您的目標程序對其環境塊執行“有趣”的事情,這可能不起作用,或者會產生可怕的後果。請先在非關鍵程序上對其進行測試,但要確保這些測試程序盡可能接近您要嘗試的程序。

引用自:https://unix.stackexchange.com/questions/38205