2013-10-01 66 views
4

我創建一個故障注入框架,並願做這樣的事情:如何從另一個進程設置一個Linux進程的全局變量?

volatile bool doFaultWriteError; 

在我的代碼,那麼我可以檢查全局變量來決定是否做故障。

在BSD中,我聽說你可以教sysctl在用戶空間進程中設置變量。這在Linux中可能嗎?我該怎麼做?

我目前的計劃是有一個SIGHUP處理程序讀取「故障配置」文件,然後設置適當的全局變量。但是如果Linux中已經有一些可以做到這一點的東西,那會更簡單。

+0

編程語言? http://www.makelinux.net/alp/035 – bartimar

回答

5

可以使用mmap通過文件處理程序(的shm_open),那麼兩個應用程序之間的通信,共享頁面。

-1

你不能改變另一個進程的環境,如果你能在任何UNIX系統中做到這一點,我會感到驚訝。

有這等問題,說明一些黑客:Is there a way to change another process's environment variables?,但他們只是醜陋的黑客:)

+0

問題是在進程空間中更改_global變量_,而不是本身的環境變量。 – Nikhil

+3

調試器和dtrace/systemtap允許你修改另一個進程的狀態,所以鉤子就在那裏。 –

相關問題