In generale non è possibile farlo solo dallo spazio utente. procfs è il kernel che segnala il suo stato di processo. Quindi, se vuoi fare qualcosa del genere,
a) devi creare un modulo del kernel che ti permetta di comunicargli il contenuto b) attivare il recupero dei contenuti attraverso un segnale di qualche tipo.
Quindi, se davvero lo vuoi fare. Vorrei suggerire il seguente percorso:
1) Scrivere un modulo del kernel in grado di comunicare lo stato del programma. Chiamiamolo kpsmod per la nostra discussione.
2) Comunicare con lo spazio utente di comunicare con il processo utente tramite un meccanismo (ad esempio il collegamento in rete) per avviare un processo di registrazione, che registra gli indirizzi variabili. Il programma userspace dice al modulo che è interessato a "esportarsi" su un segnale (ad esempio SIGHUP o SIGUSR1); rendi anche questo programmabile. Passa il nome, l'indirizzo e le dimensioni da leggere (con informazioni sul tipo, se necessario). Se la variabile è in pila, dovrebbe essere respinta.Per questo motivo dovrebbero essere consentiti solo simboli accessibili a livello globale
3) Si può anche pensare di accedere allo stack di ptrace per il processo al momento del proc_read della variabile particolare.
4), allora il modulo del kernel dovrebbe creare una/proc/kpsmod // vars * per ogni variabile e quando la variabile viene letta
5) sul leggere il deposito del contenuto della memoria tramite proc (potenzialmente formattato)
e voilà :-) hai l'effetto desiderato.
fonte
2011-11-19 09:05:14