济沧浪 济沧浪
首页
  • Git
  • Linux
  • C++
  • 设计模式
  • CUDA
  • AI
金融

LonelyTaoist

道可道非常道 名可名非常名
首页
  • Git
  • Linux
  • C++
  • 设计模式
  • CUDA
  • AI
金融
  • Git

  • Linux

    • Linux 服务器编程学习笔记①
    • Linux 服务器编程学习笔记②
    • Linux 服务器编程学习笔记③
    • Linux 服务器编程学习笔记④
    • Linux 服务器编程学习笔记⑤
    • Linux 服务器编程学习笔记⑥
    • Linux 服务器编程学习笔记⑦
    • Linux 网络 IO
    • libc库
    • Linux 小知识点
  • C++

  • 设计模式

  • CUDA

  • Python

  • VScode

  • AI

  • 计算机 小知识点
  • 计算机相关博客目录
  • 计算机
  • Linux
2021/08/08

Linux 小知识点

  1. UNIX 时间戳一般是 32 位,从 1970.1.1 开始算起,以秒计时。(注意 WINDOWS sleep 函数以毫秒计时,而 Linux 的 sleep 函数以秒计时)

  2. Linux 文件描述符(注: Linux 几乎把一切都看作是文件)

    系统为了维护文件描述符,建立了三个表。(文件描述符表(进程级)、打开文件表(系统级)、i-node 表(系统级))

    • 每个进程的0、1、2默认文件描述符都是标准输入、标准输出、标准错误。

    • 可以通过 dup() 等相关函数修改文件描述符的文件指针。

    • fork()子进程会从父进程继承打开文件表(使用自己进程的文件描述符指向与父进程相同的打开文件表项)。

    • 文件偏移量指针(read、write时的定位)以及一些状态标志和访问模式等信息都存储在打开文件表里。

    • 有可能几个进程的文件描述符指向一个打开文件表项,也可能几个打开文件表项指向一个 i-node 表项。

    • inode 存储了真正的文件信息(除了文件名字)。并且文件通过唯一的 inode 号码进行识别,文件名只是 inode 号码的别称。硬链接( ln [源文件] [目标文件] )便是多个文件名指向同一个 inode 号码的体现;软连接( ln -s [源文件] [目标文件] )相当于是在一个新的文件内存储了被连接的文件的路径。(目录也是文件)

    注:正是由于 Linux 文件名和 inode 的独立关系造成了 Linux 没有 Windows 的一些烦恼:比如,可以删除正在运行的文件( rm 只删除了文件名,内存和 inode 文件还存在);还可以在不关闭软件的情况下进行更新。因为系统通过 inode 号码识别运行中的文件,而不是通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等到下一次运行这个软件的时候,文件名就自动指向新版文件,旧版文件的inode则被回收。

libc库
C++ 对象模型学习笔记①

← libc库 C++ 对象模型学习笔记①→

最近更新
01
深度学习简单介绍
04/18
02
VScode-ssh 不兼容旧版本 Linux
02/08
03
Centos6.7 安装 python3
01/25
更多文章>
Theme by Vdoing | Copyright © 2023-2024 苏ICP备2023014117号-1 苏公网安备 32011502011853号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式