linux c 分区,Linux C编程:如何获取设备的分区信息?

Akash Rawal的答案非常接近.一个好方法是使用libblkid.

我将上面显示的代码和libblkid参考菜单中的示例结合起来并生成以下工作程序:

#include

#include

#include

#include

int main (int argc, char *argv[]) {

blkid_probe pr = blkid_new_probe_from_filename(argv[1]);

if (!pr) {

err(1, "Failed to open %s", argv[1]);

}

// Get number of partitions

blkid_partlist ls;

int nparts, i;

ls = blkid_probe_get_partitions(pr);

nparts = blkid_partlist_numof_partitions(ls);

printf("Number of partitions:%d\n", nparts);

if (nparts <= 0){

printf("Please enter correct device name! e.g. \"/dev/sdc\"\n");

return;

}

// Get UUID, label and type

const char *uuid;

const char *label;

const char *type;

for (i = 0; i < nparts; i++) {

char dev_name[20];

sprintf(dev_name, "%s%d", argv[1], (i+1));

pr = blkid_new_probe_from_filename(dev_name);

blkid_do_probe(pr);

blkid_probe_lookup_value(pr, "UUID", &uuid, NULL);

blkid_probe_lookup_value(pr, "LABEL", &label, NULL);

blkid_probe_lookup_value(pr, "TYPE", &type, NULL);

printf("Name=%s, UUID=%s, LABEL=%s, TYPE=%s\n", dev_name, uuid, label, type);

}

blkid_free_probe(pr);

return 0;

}

用法:

gcc -o getuuid getuuid.c -lblkid

sudo ./getuuid /dev/sdc

Number of partitions:1

Name=/dev/sdc1, UUID=754A-CE25, LABEL=KINGSTON, TYPE=vfat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux编程中,dd是一个非常有用的命令行工具,用于复制和转换文件。它可以用来创建镜像文件、备份和恢复数据、以及进行磁盘和分区操作等。dd命令的基本语法如下: dd if=input_file of=output_file bs=block_size count=number_of_blocks 其中,if参数指定输入文件,of参数指定输出文件,bs参数指定块大小,count参数指定要复制的块数。通过调整这些参数,可以实现不同的功能。 例如,要将一个文件复制到另一个文件,可以使用以下命令: dd if=input_file of=output_file 如果要创建一个文件的镜像,可以使用以下命令: dd if=/dev/sda of=image_file 这将复制/dev/sda设备的内容到image_file中。 需要注意的是,dd命令是一个非常强大的工具,但也非常危险。在使用dd命令时,务必小心,确保输入和输出文件的路径正确,并且仔细选择块大小和复制的块数,以避免意外删除或覆盖数据。 希望这个回答对你有帮助!\[2\] #### 引用[.reference_title] - *1* *3* [Linux常用编程工具](https://blog.csdn.net/stromSLR/article/details/121342745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [『LinuxLinux常见编程题](https://blog.csdn.net/m0_73352841/article/details/128276526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值