当前位置:   article > 正文

linux中的文件_linux下c 用define定义一个文件路径

linux下c 用define定义一个文件路径

文件

UNIX认为一切都是文件。
Linux做了修改,认为一切都是字节流。
最常用的的命令是

ls -lt
  • 1

Linux中显示的文件大小都是以字节为单位,文件夹的大小是4kb。linux也支持隐藏文件,以.开头。如果要查看隐藏文件,请加上-a选项。

##第一个字母p表示这是一个命名管道
prw-r--r-- 1 jboss5 jboss      0 9月  17 10:20 pipe_test
  • 1
  • 2

另一个常用的命令是lsof

[root@h3715217148-1 umelog]# lsof -p 63409
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
a.out   63409 umelog  cwd    DIR  253,4       39 2312707 /home/umelog/GDL_CTest
a.out   63409 umelog  rtd    DIR  253,0      268      64 /
a.out   63409 umelog  txt    REG  253,4     8608 2312708 /home/umelog/GDL_CTest/a.out
a.out   63409 umelog  mem    REG  253,0  2118128 4213141 /usr/lib64/libc-2.17.so
a.out   63409 umelog  mem    REG  253,0   155456 4213134 /usr/lib64/ld-2.17.so
a.out   63409 umelog    0u   CHR  136,0      0t0       3 /dev/pts/0
a.out   63409 umelog    1u   CHR  136,0      0t0       3 /dev/pts/0
a.out   63409 umelog    2u   CHR  136,0      0t0       3 /dev/pts/0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

其中,最后三行是标准输入,标准输出和标准错误输出。u表示读写,r代表读,w代表写。

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
a.out   22306 umelog  cwd    DIR  253,4       39 2312707 /home/umelog/GDL_CTest
a.out   22306 umelog  rtd    DIR  253,0      268      64 /
a.out   22306 umelog  txt    REG  253,4     8768 2312708 /home/umelog/GDL_CTest/a.out
a.out   22306 umelog  mem    REG  253,0  2118128 4213141 /usr/lib64/libc-2.17.so
a.out   22306 umelog  mem    REG  253,0   155456 4213134 /usr/lib64/ld-2.17.so
a.out   22306 umelog    0u   CHR  136,0      0t0       3 /dev/pts/0
a.out   22306 umelog    1u   CHR  136,0      0t0       3 /dev/pts/0
a.out   22306 umelog    2u   CHR  136,0      0t0       3 /dev/pts/0
[root@h3715217148-1 GDL_CTest]# lsof -p 22307
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
a.out   22307 umelog  cwd    DIR  253,4       39 2312707 /home/umelog/GDL_CTest
a.out   22307 umelog  rtd    DIR  253,0      268      64 /
a.out   22307 umelog  txt    REG  253,4     8768 2312708 /home/umelog/GDL_CTest/a.out
a.out   22307 umelog  mem    REG  253,0  2118128 4213141 /usr/lib64/libc-2.17.so
a.out   22307 umelog  mem    REG  253,0   155456 4213134 /usr/lib64/ld-2.17.so
a.out   22307 umelog    0u   CHR  136,0      0t0       3 /dev/pts/0
a.out   22307 umelog    1u   CHR  136,0      0t0       3 /dev/pts/0
a.out   22307 umelog    2u   CHR  136,0      0t0       3 /dev/pts/0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

可以看到,子进程会获取父进程所有打开的文件表。
这个命令各个显示项的含义是

  • COMMAND :进程名称
  • PID:进程标识符
  • USER:进程所有者
  • FD:文件描述符,应用程序通过文件描述符识别到该文件。如cwd、txt等
  • TYPE:文件类型,如DIR,REG
  • DEVICE:指定磁盘名称
  • SIZE:文件大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称

除了查看一个进程打开了多少文件,我们也可以查看文件被多少个进程打开

lsof /pwd/other.log
  • 1

INODE及其机制

## 查找某个inode编号的文件
find -inum 201960752
  • 1
  • 2

在这里插入图片描述
inode 号仅在各文件系统下是唯一的。言外之意,当 Linux 挂载多个文件系统后将出现 inode 号重复的现象。文件系统所能提供的inode是有限的。言外之意你可能回遇到inode耗尽的错误。

常见的文件种类

linux中的文件只有以下七种

  1. 普通文件(-表示,可用ls -l查看)
  2. 目录(d)[在Linux中,任何东西都被看成文件,外设备也看成文件,注意是任何东西]、
  3. 字符设备文件(c)
  4. 块设备文件(b)
  5. 套接口文件(s)[如我们开启MySQL服务后,在/var/lib/mysql/下生成的mysql.sock文件,关闭MySQL服务后,这个文件就消失了]
  6. 管道(p)[管道在Linux/UNIX中式非常有用的东西,必须掌握哈]
  7. 符号链接文件(l)[有点儿像WIN下的快捷方式]

Socket文件

在这里插入图片描述
逻辑上,Socket = IPaddress + TCP/UDP + port。

硬链接和软链接

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

  • 文件有相同的 inode 及 data block;
  • 只能对已存在的文件进行创建;
  • 不能跨文件系统进行硬链接的创建;
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件。
    硬连接通过link或者ln进行创建。
link oldfile newfile
  • 1

另外,硬连接计算一个引用数。

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊(存储的是路径)。你只要创建的文件是同名同目录的,软链接并不介意。
在这里插入图片描述

ln -s old.file soft.link 
  • 1
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号