2013-10-01 4 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_ в пространстве процесса, а не в переменной среды per se. – Nikhil

+3

Отладчики и dtrace/systemtap позволяют изменять состояние другого процесса, поэтому есть крючки. –

Смежные вопросы