Я пытаюсь найти информацию о диске и разделах. Ниже приведен мой код. Но проблема в том, что я передаю имя диска через командную строку, запрашивая имя диска из «/ proc/partition». Есть ли api, который может дать мне имя диска.Как получить имя диска программно в Linux (например, «/ dev/sda» или «/ dev/sdb»)?
#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#include <blkid/blkid.h>
int main (int argc, char *argv[])
{
blkid_probe pr;
blkid_partlist ls;
int nparts, i;
pr = blkid_new_probe_from_filename(argv[1]);
if (!pr)
err(2, "faild to open device %s", argv[1]);
ls = blkid_probe_get_partitions(pr);
nparts = blkid_partlist_numof_partitions(ls);
for (i = 0; i < nparts; i++)
{
blkid_partition par = blkid_partlist_get_partition(ls, i);
printf("PartNo = %d\npart_start = %llu\npart_size = %llu\npart_type = 0x%x\n",
blkid_partition_get_partno(par),
blkid_partition_get_start(par),
blkid_partition_get_size(par),
blkid_partition_get_type(par));
}
blkid_free_probe(pr);
return 0;
}
Запросить одно и то же имя диска в программе. Откройте/proc/разделы и прочитайте все, что вам нужно –
вы можете использовать 'glob' с' '/ dev/sd?" ', Чтобы найти все диски. – mch