我創建一個故障注入框架,並願做這樣的事情:如何從另一個進程設置一個Linux進程的全局變量?
volatile bool doFaultWriteError;
在我的代碼,那麼我可以檢查全局變量來決定是否做故障。
在BSD中,我聽說你可以教sysctl在用戶空間進程中設置變量。這在Linux中可能嗎?我該怎麼做?
我目前的計劃是有一個SIGHUP處理程序讀取「故障配置」文件,然後設置適當的全局變量。但是如果Linux中已經有一些可以做到這一點的東西,那會更簡單。
我創建一個故障注入框架,並願做這樣的事情:如何從另一個進程設置一個Linux進程的全局變量?
volatile bool doFaultWriteError;
在我的代碼,那麼我可以檢查全局變量來決定是否做故障。
在BSD中,我聽說你可以教sysctl在用戶空間進程中設置變量。這在Linux中可能嗎?我該怎麼做?
我目前的計劃是有一個SIGHUP處理程序讀取「故障配置」文件,然後設置適當的全局變量。但是如果Linux中已經有一些可以做到這一點的東西,那會更簡單。
可以使用mmap
通過文件處理程序(的shm_open),那麼兩個應用程序之間的通信,共享頁面。
你不能改變另一個進程的環境,如果你能在任何UNIX系統中做到這一點,我會感到驚訝。
有這等問題,說明一些黑客:Is there a way to change another process's environment variables?,但他們只是醜陋的黑客:)
問題是在進程空間中更改_global變量_,而不是本身的環境變量。 – Nikhil
調試器和dtrace/systemtap允許你修改另一個進程的狀態,所以鉤子就在那裏。 –
編程語言? http://www.makelinux.net/alp/035 – bartimar