title: stat中的st_dev和st_rdev

date: 2019/11/27 21:04:25

toc: true

stat中的st_dev和st_rdev

dev_t     st_dev;         /* ID of device containing file */
dev_t st_rdev; /* Device ID (if special file) */

这两个存的都是主次设备号,都要通过宏majorminor来取出来

  • st_dev 存的是文件本身存储设备的设备号,也就是硬盘的设备号
  • st_rdev是针对驱动的字符设备和块设备文件的主次设备号

看例子,先看下我的硬盘,ls -l看下硬盘设备的设备号

$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 796M 8.7M 787M 2% /run
/dev/sda1 30G 28G 908M 97% /
tmpfs 796M 0 796M 0% /run/user/1000 $ ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 Nov 18 17:06 /dev/sda1 reallin@ubuntu:/dev$ ls -l /dev/sdb
brw-rw---- 1 root disk 8, 16 Nov 18 17:06 /dev/sdb reallin@ubuntu:/dev$ ls -l /dev/sdb1
brw-rw---- 1 root disk 8, 17 Nov 18 17:06 /dev/sdb1 v$ ls -l /dev/zero
crw-rw-rw- 1 root root 1, 5 Nov 18 17:06 /dev/zero

再来执行程序,查看可以看到确实是第二块硬盘的设备号

> ./devrdev access.c ../
access.c: dev = 8/17
../: dev = 8/17

再看看其他的设备文件,后面的号是字符设备的设备号了,前面那个0-6 也不是我们的主硬盘 不知道是啥情况

/dev/ttyS0: dev = 0/6 (character) rdev = 4/64

/dev/zero: dev = 0/6 (character) rdev = 1/5

附录程序

#include "apue.h"
#ifdef SOLARIS
#include <sys/mkdev.h>
#endif
#include <sys/sysmacros.h>
int
main(int argc, char *argv[])
{
int i;
struct stat buf; 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) || S_ISBLK(buf.st_mode)) {
printf(" (%s) rdev = %d/%d",
(S_ISCHR(buf.st_mode)) ? "character" : "block",
major(buf.st_rdev), minor(buf.st_rdev));
}
printf("\n");
} exit(0);
}

stat中的st_dev和st_rdev的更多相关文章

  1. python中os模块中文帮助

    python中os模块中文帮助   python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ...

  2. python基础之文件处理

    读和写文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...

  3. python杂记-1(os模块)

    os模块说明:python os模块包含普遍的操作系统功能 os.access(path, mode) # 检验权限模式 os.chdir(path) # 改变当前工作目录os.chflags(pat ...

  4. python之文件

    文件打开函数:f = open 表1-1:open函数中模式参数常用值 打开模式 描述 'r' 读模式 'w' 写模式 'a' 追加模式 'b' 二进制模式 '+' 读/写模式 表1-2:文件对象方法 ...

  5. 【Python3之常用模块】

    一.time 1.三种表达方式 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.命令如下 ...

  6. python模块-OS模块详解

    1.按字母分 os相关的函数:143个.按字母排序如下: ['abort', 'access', 'altsep', 'chdir', 'chmod', 'chown', 'chroot', 'clo ...

  7. Python3 OS 文件/目录方法

    os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: 序号 方法及描述 1 os.access(path, mode) 检验权限模式 2 os.chdir(path) 改变当前工作 ...

  8. python 基础语法学习

    .注释 python单行注释以#开头 如:#!/usr/bin/env python3 #查找运行环境 多行注释有' ' '和" " " .python最具有特色的是使用 ...

  9. python学习笔记-os模块参数

    python的os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: os.access(path, mode) 检验权限模式 os.chdir(path) 改变当前工作目录 os. ...

随机推荐

  1. 7、Spring Boot 2.x 集成 Redis

    1.7 Spring Boot 2.x 集成 Redis 简介 继续上篇的MyBatis操作,详细介绍在Spring Boot中使用RedisCacheManager作为缓存管理器,集成业务于一体. ...

  2. jquery 下载

    jquery下载所有版本(实时更新) 摘自:http://www.jq22.com/jquery-info122 插件描述:jquery下载,实时更新jquery1.2到最新3.2.1所有版本下载 j ...

  3. 获取select框下option所有值

    document.getElementById('roomId').options[0].value;获取第一个值 var roomIds = $("#roomId option" ...

  4. git error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

    原因:git 版本过低 解决方法:卸载旧版本,重装新版本

  5. linux系统编程--线程同步

    同步概念 所谓同步,即同时起步,协调一致.不同的对象,对“同步”的理解方式略有不同. 如,设备同步,是指在两个设备之间规定一个共同的时间参考: 数据库同步,是指让两个或多个数据库内容保持一致,或者按需 ...

  6. 「CF716D」Complete The Graph「最短路」

    题意 给定一个\(n\)个点\(m\)条边的无向图,有一些边权暂时为\(0\),你需要分配一个\([1, 10^{18}]\)的数.最终使得\(s\)到\(t\)最短路为\(L\),输出一个可行的分配 ...

  7. Driver对 (一对两对的对):specific/mini VS general

    老是听说miniport,port,在这里算是搞清楚了.mini就是specific(特殊)的意思.在微软的驱动层次里面,最底层的一般都是比较特殊的,但是为了满足系统的可拓展.可维护.通用等要求,微软 ...

  8. python-selenium视频教程分享

    1.python电子书 2.课件 3.前段调试工具 4.文档资料 5.python-selenium课程列表 6.sele01-sele22 百度网盘连接:链接: https://pan.baidu. ...

  9. create-react-app 构建的项目使用代理 proxy

    1. 正常运行 npm run eject (前三个步骤可省略,最好的是按照第四步操作) 2. create-react-app 的版本在低于 2.0 的时候可以在 package.json 增加 p ...

  10. 微信小程序之简单记账本开发记录(四)

    昨天搭建了大致界面 今天需要将用到的一系列样式表配置出来并检查错误