2012-02-07 31 views
0

可能重複:
How to get drive label in Linux using C from userspace獲取磁盤標籤在Linux下的C/C++

我如何可以通過其文件名獲得一個磁盤的標籤(的/ dev/sda1的,如)在用C/C++編寫的程序中?

+0

查看給出該標籤的實用程序的源代碼。 – 2012-02-07 14:54:13

+0

@PlasmaHH被接受的答案404的 – Joe 2012-02-07 14:58:47

+0

@Joe:在答案中用鏈接的名稱搜索導致新的uri(kernel.org已被廣泛重組)。不應該太難以做到這一點。你也可以很好地編輯指向新網址的答案。或發表評論。 – PlasmaHH 2012-02-07 15:00:15

回答

1

您可以編寫C或C++中的等價命令:

find -L /dev/disk/by-label -inum $(stat -c %i /dev/sda1) -print 

也就是說,stat()你關心,並記住它的索引節點號的設備文件。迭代/ dev/disk/by-label中的所有文件,並且每個文件都包含stat()。當inode號碼匹配時,匹配文件的名稱就是該磁盤的標籤。

如果是我,我會使用C++編寫上述算法,使用Boost.Filesystem

+0

謝謝。我知道這種方式 - 使用/ dev/disk/by-label。但是應用inode的想法很有趣。唯一的注意事項是:lstat()提供關於鏈接本身的信息,而不是它指向的文件。因此,這兩種情況下都必須使用stat()。 – mikithskegg 2012-02-07 15:48:52

+0

re:lstat。當然你是對的。我修復了我的答案。 – 2012-02-07 15:50:57

+0

該命令的開頭應該讀取find -L/dev/disk/by-path。 – Frank 2016-02-25 13:46:29