特殊设备文件
stdev是設(shè)備號,分為主次設(shè)備號:
major(buf.st_dev) //主設(shè)備號 minor(buf.st_dev) //次設(shè)備號主設(shè)備號表示設(shè)備驅(qū)動程序,而次設(shè)備號表示特定的子設(shè)備。比如在同一個磁盤上面 不同的文件系統(tǒng),設(shè)備驅(qū)動程序相當(dāng),但是次設(shè)備號不同。
strdev只有字符特殊文件和塊特殊文件才有這個值,表示實際設(shè)備的設(shè)備編號。
#include <sys/types.h> #include <sys/stat.h> #include <cstdio> int main(int argc,char * const* argv){for(int i=1;i<argc;i++){struct stat buf;stat(argv[i],&buf);printf("%s dev=%d/%d",argv[i],major(buf.st_dev),minor(buf.st_dev));if(S_ISCHR(buf.st_mode) || S_ISBLK(buf.st_mode)){if(S_ISCHR(buf.st_mode)){printf(" (character)");}else if(S_ISBLK(buf.st_mode)){printf(" (block)");}printf(" rdev=%d/%d",major(buf.st_rdev),minor(buf.st_rdev));}printf("\n");}return 0; } [dirlt@localhost.localdomain]$ mount /dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) [dirlt@localhost.localdomain]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol0019552940 2649028 15894660 15% / /dev/sda1 194442 12450 171953 7% /boot tmpfs 127628 0 127628 0% /dev/shm [dirlt@localhost.localdomain]$ ./main /boot/ /dev/shm /tmp /home /dev/cdrom /dev/tty0 /boot/ dev=8/1 /dev/shm dev=0/18 /tmp dev=253/0 /home dev=253/0 /dev/cdrom dev=0/16 (block) rdev=11/0 /dev/tty0 dev=0/16 (character) rdev=4/0
TODO(zhangyan04):其實對于設(shè)備號這個東西還不是非常地了解,認(rèn)識有待加深。
總結(jié)