Вообще говоря, вы не можете сделать это только из пользовательского пространства. procfs - это ядро, сообщающее вам о своем состоянии процесса. Так что, если вы хотите сделать что-то подобное, вы бы
а) должен создать модуль ядра, который позволит вам передавать контент обратно на него
б) инициировать поиск контента через какой-либо сигнал.
Итак, если вы ДЕЙСТВИТЕЛЬНО хотите это сделать. Я бы предложил следующий путь:
1) Напишите модуль ядра, который может сообщать о состоянии программы. Давайте назовем это kpsmod для нашего обсуждения.
2) Обеспечить связь с пользовательским пространством или с пользовательским процессом через некоторый механизм (скажем, через сетевую связь), чтобы инициировать некоторый процесс регистрации, который регистрирует адреса переменных. Пользовательская программа сообщает модулю, что она заинтересована в «экспорте» себя по сигналу (скажем, SIGHUP или SIGUSR1); сделать это программируемым тоже. Передайте имя, адрес и размеры для чтения (с информацией о типе, если это необходимо). Если переменная находится в стеке, она должна быть отклонена. Для этого допускаются только общедоступные символы (для простоты)
3) Вы даже можете подумать о доступе к стеку ptrace для процесса во время proc_read определенной переменной.
4) тогда модуль ядра должен создать / proc / kpsmod // vars * для каждой переменной и когда эта переменная читается
5) при чтении выдает содержимое памяти через proc (возможно, отформатированный)
и вуаля :-) у вас есть желаемый эффект.