• Linux一切皆文件


    一切皆文件

    • 首先通常在windows中是文件的东西,它们在linux中也是文件
    • 其次一些在windows中不是文件的东西, 比如进程, 磁盘, 也被抽象成了文件. 你可以使用访问文件的方法访问它们获得信息.
    • 再其次,一些很离谱的东西, 比如管道, 比如/dev/zero(一个可以读出无限个0的文件) /dev/null(一个重定向进去之后就消失了的文件). 它们也是文件
    • 再再其次, 类似于socket这样的东西, 使用的接口跟文件接口也是一致的.

    带来的好处就是, 你可以使用同一套api(read, write)和工具(cat , 重定向, 管道)来处理unix中大多数的资源.这就使得组合了简单的命令和字符处理工具(awk, sed)之后, shell脚本就能发挥出强大的功能.

    文件分类

    Linux下文件一般有如下几种类型:

    1.普通文件          # xxx.log
    2.目录              # /usr/ /home/
    3.字符设备文件      # /dev/tty的属性是 crw-rw-rw- ,注意前面第一个字符是 c ,这表示字符设备文件,比如猫等串口设备
    4.块设备文件        # /dev/hda1 的属性是 brw-r----- ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备
    5.套接字文件        # /var/lib/mysql/mysql.sock srwxrwxrwx
    6.管道              # pipe
    7.符号链接文件      # softlink...

    文件操作系统调用

    虽然对文件的操作就那么几个,但是由于linux把所有的设备、文件的操作都统一了,所以这些系统调用会有很多参数来处理各种类型的文件,所以还是有点复杂的,这里的复杂有一点是如果你还没有全面掌握各种类型的文件操作,读文档的时候就会遇到某些参数一脸懵逼,不知所云,比如 O_NONBLOCK 这个标志对普通的文件是不起作用的,对什么文件起作用?那你得操作块设备,字符设备,FIFOs (named pipes),所以这里需要有比较系统全面的知识才能看的比较通透

    详细的系统调用说明参考 man或系统文档 man-fileopen

    内核实现

    代码示例 / github

  • 相关阅读:
    eclipse和jdk版本对应问题
    2017第49周四黑珍珠的价值
    如何写python插件、包,放到pypi上供其他人使用
    zerorpc的安装
    httplib 和 httplib2区别之 gzip解压
    mac下报错 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    使用zerorpc踩的第一个坑:
    Jmeter Summariser report及其可视化
    sublime快捷键设置
    来,来,来,哥哥告诉你一个把文件搞大的方法
  • 原文地址:https://www.cnblogs.com/how-are-you/p/7588703.html
Copyright © 2020-2023  润新知