¿Hay alguna API de espacio de usuario o módulo de kernel de terceros que pueda ayudar a acceder al archivo por inodo en Linux?
Estoy tratando de implementar algo como:
int read_file_by_ino(int ino, int pos, int size, char* buf); int write_file_by_ino(int ino, int pos, int size, const char* buf); int readdir_by_ino(...); int stat_by_ino(...); ...Se espera que el programa se ejecute bajo el usuario raíz, por lo que no hay ningún requisito de seguridad para verificar los permisos.
No estoy seguro si entendí bien tu problema, pero:
Puede comenzar con el directorio "/" y continuar de forma recursiva (o cualquier bucle para el caso) con niños. Compare el valor del inodo con strcut stat.ino_t . Una vez que lo encuentre, abra la ruta/archivo.
No sé si hay una manera más fácil o no, pero puedes hacerlo con bash. con el comando ls -i también puedes ver los inodos,
$ ls -i 11147622 file.txtla primera columna es el número de inodo, el comando soplar muestra los inodos en el directorio actual
$ ls -i | awk {'print $1'}por lo que debe verificar los inodos de / también todos sus subdirectorios hasta encontrarlo
ls -iR / muestra todos los subdirectorios y archivos con su número de inodo
ahora debe comenzar desde / y usar el comando awk to o cut para tener la primera columna (el número de inodo está en la primera columna) y luego compararlo con el inodo que desea encontrar.