Cómo y dónde lee linux-kernel el archivo proc/pid que muestra todos los procesos en el sistema. Encontré linux-source-2.6.31/fs/proc/Aquí hay archivos, pero es difícil de entender porque es realmente complicado. ¿Alguien sabe cómo funciona?¿Cómo lee el archivo linux-kernel proc/pid?
Respuesta
Busque en su directorio/proc, hay un archivo virtual que enumera todos los procesos que se ejecutan en el sistema, incluso el programa binario ps realmente abre ese archivo en el directorio/proc para generar la lista de procesos/pids ..
Linux ProcFs Guide Linux Proc Filesystem as a Programmer's Tool
/proc es un pseudo sistema de archivos, lo que significa que sus contenidos no son archivos "reales". En cambio, los contenidos son una representación de las estructuras de datos internas del kernel. Por lo tanto, el kernel no necesita leer ellos - ya puede acceder a los datos directamente.
/proc es utilizado por programas de modo de usuario (es decir, no kernel) como ps
para averiguar (por ejemplo) sobre procesos que se ejecutan en el sistema. Hay un man page que describe gran parte de lo que está disponible.
Estás buscando en el lugar correcto.
Específicamente, la función proc_pid_readdir()
en fs/proc/base.c
se usa para completar la lista de entradas pid cuando se lee el directorio raíz /proc
. Puede ver el ciclo básico alrededor de todos los procesos y tareas en esa función:
ns = filp->f_dentry->d_sb->s_fs_info;
iter.task = NULL;
iter.tgid = filp->f_pos - TGID_OFFSET;
for (iter = next_tgid(ns, iter);
iter.task;
iter.tgid += 1, iter = next_tgid(ns, iter)) {
filp->f_pos = iter.tgid + TGID_OFFSET;
if (proc_pid_fill_cache(filp, dirent, filldir, iter) < 0) {
put_task_struct(iter.task);
goto out;
}
}
- 1. Archivo sin bloqueo lee
- 2. GZipStream no lee todo el archivo
- 3. ¿Lee el contenido de un objeto "archivo"?
- 4. ¿Cómo se lee la sección AppSettings en el archivo web.config?
- 5. ¿Cómo se lee el archivo local (Cliente) con GWT?
- 6. ¿Cómo se lee el archivo secuencial de hadoop?
- 7. ¿Cómo se lee el valor de propiedad del archivo externo?
- 8. ¿Lee un archivo al revés?
- 9. Bash: caracteres especiales se perdieron cuando se lee el archivo
- 10. ¿Cómo se lee el contenido del archivo en una variable en un archivo por lotes?
- 11. Python no lee todo el archivo de texto
- 12. ¿Cómo se lee un archivo que está en uso?
- 13. Lee un archivo binario en una matriz
- 14. ¿Cómo se lee continuamente un archivo en Java?
- 15. ¿Cómo se lee CDATA en un archivo XML con PowerShell?
- 16. ¿Cómo se lee JavaDoc?
- 17. Python: El archivo no lee todo el archivo, io.FileIO lo hace - ¿por qué?
- 18. ¿Cómo se lee app.config en el nivel dll?
- 19. ¿Cómo se lee el margen de ImageView mediante programación?
- 20. py3k: ¿Cómo se lee un archivo dentro de un archivo zip como texto, no como bytes?
- 21. Ruby: Cómo determinar si el archivo que se lee es binario o texto
- 22. ¿Cómo se lee el archivo de registro del sistema en Android?
- 23. C# ¿Cómo saltear el número de líneas mientras lee un archivo de texto usando Stream Reader?
- 24. ¿Cómo se lee el archivo de propiedades en la aplicación web?
- 25. ¿Cómo se lee un archivo xml en App_Data con .NET MVC3 Framework según el controlador?
- 26. ¿Cómo unidad de clase de prueba que lee el archivo xml?
- 27. lee un archivo en una matriz de líneas en d
- 28. Lee y escribe en un archivo usando VBScript
- 29. ¿Quién lee el valor de ENV ['SSL_CERT_FILE']?
- 30. Lee un archivo del servidor con ssh usando python