2012-02-14 25 views
13

¿Existe una función (o interfaz; ioctl, netlink, etc.) en las librerías de Linux estándar que devolverán los montajes actuales directamente desde el kernel sin analizar/proc? strace Al comando mount, parece que analiza los archivos en/procFunción Linux para obtener puntos de montaje

+0

http://stackoverflow.com/questions/5095976/mount-system-call – Satish

+1

@Satish que se monta un filesystem- no vuelve mounts_ _current – tMC

+4

¿Por qué quiere evitar '/ proc /'? ? en Linux, ¡es la forma preferida de recuperar dicha información! ¡Y es muy simple también! –

Respuesta

2

No hay una llamada para listar esta información; en su lugar, puede encontrarlo en el archivo /etc/mtab

+0

mtab es solo un enlace simbólico a/proc/se monta en la mayoría de los sistemas. – tMC

+0

enlace simbólico o enlace directo? Recuerdo que en los viejos tiempos mtab no era confiable ... –

+0

@tMC: '/ proc/mounts' es un detalle de implementación. '/ etc/mtab' es un archivo estándar que encontrará en casi cualquier sistema tipo Unix. No revisé, pero creo que es parte del estándar. Entonces puedes confiar en eso. Y no diría "en la mayoría del sistema". En mis sistemas Ubuntu y OpenSuSE, es un archivo simple. Tengo '/ proc/mounts' pero es un enlace :-) –

32

¿Hay alguna razón para que no use la llamada a la biblioteca libc getmntent? Me doy cuenta de que no es lo mismo que una llamada al sistema 'todo en uno', pero debería permitirle obtener la información relevante.

#include <stdio.h> 
#include <stdlib.h> 
#include <mntent.h> 

int main(void) 
{ 
    struct mntent *ent; 
    FILE *aFile; 

    aFile = setmntent("/proc/mounts", "r"); 
    if (aFile == NULL) { 
    perror("setmntent"); 
    exit(1); 
    } 
    while (NULL != (ent = getmntent(aFile))) { 
    printf("%s %s\n", ent->mnt_fsname, ent->mnt_dir); 
    } 
    endmntent(aFile); 
} 
+0

Tengo un sistema integrado que podría haber utilizado esta información durante el arranque; before/proc fue montado. – tMC

+1

Tanto 'df' como' mount' usan '/ proc/self/mountinfo' en lugar de'/proc/mounts', pero el resultado es el mismo. –

+1

Ten en cuenta que 'getmntent' no es seguro para subprocesos. Hay 'getmntent_r' (extensión GNU). –

Cuestiones relacionadas