Pregunta

Duplicado en stackoverflow por uno de mis amigos que tiene el mismo problema:

Copié el código de este tutorial: http://www.thegeekstuff.com/2012/04/create-proc-files/

E hice el módulo que creó mi perfil.

Me alegré de descubrir que obtuve un archivo de procfile que podía repetir "texto" > proc/name_of_procfile

¡¡También puedo leer con gato!!

He estado jugando con él y ahora tengo una cantidad considerable de valores en mi perfil; cada vez que hago un gato, pasa por estos valores secuencialmente:

P1.Me pregunto: ¿cómo elimino valores del archivo de proceso?

TAMBIÉN, más adelante, intentaré lograr el comportamiento de que cada vez que un archivo lea mi procfile, cambie el valor de lo que acaba de leer en proc_file.

P2.Sé que esto se implementaría en mi método "int read_info", pero ¿algún consejo sobre cómo hacerlo?

¿Fue útil?

Solución

P1.

No puede eliminar estos valores en el sentido normal de una operación de eliminación en un sistema de archivos.Puedes echo algo en procfile si se puede escribir.Entonces depende del comportamiento de un módulo cómo se tratan estos datos "entrantes".¿Será almacenado, descartado o contabilizado de alguna manera internamente? El módulo decide.Para ser más precisos, la lógica que pones en el módulo define el tratamiento.El módulo de este ejemplo tiene una lógica muy simple:memoriza una cadena en su buffer interno cuando el kernel llama a su write_info función: en realidad concatena nuevos datos con el contenido actual.Luego puede devolver el contenido de este búfer cuando el kernel llama a su función read_info.Entonces si lo haces:

echo "some text">/proc/yourprocfile
echo "another text">/proc/yourprocfile

Entonces cat /proc/yourprocfile imprimiría

some text
another text

en la pantalla.Para resumir:el comportamiento completo de estos archivos es module-defined.

P2.

Podrías hacer esto casi como lo haces en el modo habitual. C programa.Hay dos diferencias principales:

  • la API accesible en el modo kernel es diferente.Algunas funciones tienen nombres y funciones iguales o muy similares a sus análogas en el estándar. C la biblioteca tiene.Las otras funciones tienen nombres diferentes pero siguen siendo análogas a algunas funciones del espacio de usuario.Y luego, algunas funciones específicas que están disponibles sólo en el espacio del kernel.

  • Todo lo que haga en el espacio del kernel debe ser revisado y depurado varias veces. on the sheet of paper ya que cualquier error en su módulo puede causar un volcado mínimo del núcleo del kernel (el kernel simplemente se detiene y luego debe presionar reset para reiniciar su sistema) y, en el peor de los casos, puede causar corrupción de datos de sus sistemas de archivos.

Entonces, te recomendaría que configures el paquete VirtualBox;crear con esta hermosa herramienta una máquina virtual;instalar allí la versión mínima de Linux y hacer una instantánea de su disco virtual después de la instalación.Así que si algo sale mal siempre podrás revertir cualquier daño.No necesita instalar todas sus herramientas de compilación y el código fuente del kernel allí; solo cargará y probará/depurará sus módulos/aplicaciones en esta máquina virtual.

Pero de todos modos, la zona que vas a tocar, o mejor dicho, ya tocada, es muy interesante.

Buena suerte

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top