Como stat
retorna um campo "Dispositivo", fiquei curioso para ver como a chamada subjacente da biblioteca stat()
poderia ser usada para obter essas informações programaticamente de uma maneira compatível com POSIX.
Este snippet de código C:
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
int main (int argc, const char *argv[]) {
struct stat info;
stat(argv[1], &info);
printf("min: %d maj: %d\n",
minor(info.st_dev),
major(info.st_dev)
);
return 0;
}
Os IDs de dispositivos principais e secundários serão fornecidos para o dispositivo que contém o arquivo listado na linha de comando ( argv[1]
). Infelizmente, major()
e minor()
não são POSIX, embora o man page afirme que eles estão "presentes em muitos outros sistemas" além do GNU / linux.
Você pode então obter uma correspondência entre o número principal / secundário do dispositivo e o nó do dispositivo, por exemplo, /proc/diskstats
, e mapeá-lo para montar pontos de /proc/mounts
, também conhecido como. /etc/mtab
.
Portanto, um utilitário de linha de comando para isso seria bem simples.