struct stat{mode_t st_mode; /* file type & mode (permissions) */ino_t st_ino; /* i-node number (serial number) */dev_t st_dev; /* device number (file system) */dev_t st_rdev; /* device number for special files */nlink_t st_nlink; /* number of links */uid_t st_uid; /* user ID of owner */gid_t st_gid; /* group ID of owner */off_t st_size; /* size in bytes, for regular files */struct timespec st_atim; /* time of last access */struct timespec st_mtim; /* time of last modification */struct timespec st_ctim; /* time of last file status change */blksize_t st_blksize; /* best I/O block size */blkcnt_t st_blocks; /* number of disk blocks allocated */};
typedef __dev_t dev_t;
#define major(dev) gnu_dev_major (dev)
/*** 为每个命令行参数打印设备号,另外,若此参数引用的是字符特殊文件或者块特殊文件,* 则还打印特殊文件的st_rdev值*/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>int main(int argc, char *argv[]){struct stat buf;int i = 0;for (i = 1; i < argc; i++){printf("%s: ", argv[i]);if (stat(argv[i], &buf) < 0){err_ret("stat error");continue;}printf("dev = %d/%d ", major(buf.st_dev), minor(buf.st_dev));if (S_ISCHR(buf.st_mode)){printf("(character) rdev = %d/%d", major(buf.st_rdev), minor(buf.st_rdev));}else if (S_ISBLK(buf.st_mode)){printf("(block) rdev = %d/%d", major(buf.st_rdev), minor(buf.st_rdev));}printf("\n");}exit(0);}
$ ./a.out / /home/fireway/ /dev/tty[01]
/: dev = 8/1
/home/fireway/: dev = 8/1
/dev/tty0: dev = 0/6 (character) rdev = 4/0
/dev/tty1: dev = 0/6 (character) rdev = 4/1
$ mount <---------------------哪些目录安装在哪些设备上(详细原理见下文)
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/112/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=lightdm)
$ ls -l /dev/tty[01] /dev/sda[01]
brw-rw---- 1 root disk 8, 1 11月 17 07:52 /dev/sda1
crw--w---- 1 root tty 4, 0 11月 17 07:52 /dev/tty0
crw-rw---- 1 root tty 4, 1 11月 17 07:52 /dev/tty1
| 设备 | 在Linux内的文件名 |
| IDE硬盘 | /dev/hd[a-d] |
| SCSI / SATA / USB 硬盘 | /dev/sd[a-p] |
| U盘,全称USB闪存盘,英文名“USB flash disk” | /dev/sd[a-p](与SATA 相同) |
| 软盘驱动器 | /dev/fd[0-1] |
| 打印机 | 25 针: /dev/lp[0-2] USB: /dev/usb/lp[0-15] |
| 鼠标 | USB: /dev/usb/mouse[0-15] PS2: /dev/psaux |
| 当前CDROM/DVDROM | /dev/cdrom |
| 当前的鼠标 | /dev/mouse |
| 磁带机 | IDE: /dev/ht0
SCSI: /dev/st0 |


P1:/dev/hda1
P2:/dev/hda2
P3:/dev/hda3
P4:/dev/hda4

P1:/dev/hda1
P2:/dev/hda2
L1:/dev/hda5
L2:/dev/hda6
L3:/dev/hda7
L4:/dev/hda8
L5:/dev/hda9

/ 根目录
├── bin 存放用户二进制文件
├── boot 存放内核引导配置文件
├── dev 存放设备文件
├── etc 存放系统配置文件
├── home 用户主目录
├── lib 动态共享库
├── lost+found 文件系统恢复时的恢复文件
├── media 可卸载存储介质挂载点
├── mnt 文件系统临时挂载点
├── opt 附加的应用程序包
├── proc 系统内存的映射目录,提供内核与进程信息
├── root root 用户主目录
├── sbin 存放系统二进制文件
├── srv 存放服务相关数据
├── sys sys 虚拟文件系统挂载点
├── tmp 存放临时文件
├── usr 存放用户应用程序
└── var 存放邮件、系统日志等变化文件

| 操作系统 | 文件系统 |
| windows 98以前 | FAT(或FAT16) |
| windows 2000 | NTFS |
| Linux | Ex2(Linux second extended file system, ext2fs) |
原文:http://www.cnblogs.com/fireway/p/6103261.html