</p>&ma, &mi, &sz, ptname) != 4)8 C+ |! A- h. a! d2 P
continue;* F1 ^; m" j v/ A7 m/ I2 |
for (s = ptname; *s; s++)
+ Y" S- E1 u9 \4 R }+ \6 M* }continue;; A1 \3 A, L) J7 Q& S6 k
/* note: excluding ‘0’: e.g. mmcblk0 is not a partition name! */
4 R4 u% |* R2 x% [if (s[-1] 》= ‘1’ && s[-1] 《= ‘9’); ^) p3 P3 B' T; ~* O: V" P: q
continue;
6 z" O, u `1 r3 ]! fnDiskCount++;6 P. {( o+ j- \; u. ?
}: E3 l3 j; s* c6 S9 Y J6 Q9 ]
fclose(f);
+ @/ u& H: w3 `3 N3 I' Oreturn nDiskCount;
5 k' \) T& g) c9 g' S: Z; H- d}; F( _& Y# t- F' W7 o' Z
int main(int argc, char * argv[])
z; W1 q4 k- d# z) L{1 i5 B* C5 M4 V6 \) r
printf(“DiskCount: %d\n”, GetDiskCount());
( F; [0 n( a' u5 k, p* O' r. Creturn 0;
& A$ a3 R4 h5 e U, y}
- {" f, G7 [+ Z* g其实,事理很简单。就是经由过程proc文件系统获得。在proc文件系统中有一个名为partitions的文件。这个文件中包含当地磁盘的硬盘及分区信息。按照Linux下设备命名轨则,如不美观设备名的最后一个字符是数字就应该是分区,否则就是硬盘。于是,我们就可以垂手可得的知道电脑中有几个硬盘。
# `4 i/ V! o5 b! e5 V! C当然,按照这个文件,还可以知道硬盘设备名称以及每个硬盘平分区的数目和每个分区的设备名称。至于若何获取,巨匠应该城市的。5 v' H. @% _1 a0 [$ H" G/ v
获取硬盘信息:
" \" D" R) u0 G' n2 b) |2 e此刻,我们已经可以知道硬盘数目、硬盘的设备名称、分区数及分区的设备名称。那么,怎么才能知道这些设备的信息呢?好比硬盘巨细、扇区巨细、分区巨细、分区已经使用的巨细等等。
0 M: b; i2 g+ a* M+ l0 C关于硬盘的信息,在fdisk的源码中也可以找到相关的源码。实例代码如下:
& P7 |2 I! t, Z. X9 h#include
4 ^, |, g0 W: t% p* u; s. A#include6 ^' m. I, t1 f ^+ e
int GetDiskCount()
. i* k6 `$ u* L: S; Z' q$ D$ u& A{0 g. z1 _# o" i
FILE* f = fopen(“/proc/partitions”, “r”); w5 s9 B4 w& b) }! A3 q
if (!f)
% A+ o) I" z' q/ T: X( H{
3 k) U; t \) N J/ Ffprintf(stderr, “fopen /proc/partitions failed!errno=%d\n”, errno);
+ f. }. p) j# }3 e: C& s+ e& E3 y% A/ jreturn 0;
* H+ s1 O" e: ]) s}5 @( I }8 z7 _, f' g0 p/ [3 q
0 a! {; p: i, b5 X- Q" g3 f) ^
char line[100], ptname[100], devname[120], *s; |