文件描述符定义

文件描述符:是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O 操作的系统调用都通过文件描述符;文件描述符是一个简单的非负整数,用以标明每一个被进程所打开的文件,程序刚刚启动的时候,第一个打开的文件是 0,第二个是 1,依此类推。也可以理解为是一个文件的身份 ID。 

用户通过操作系统处理信息的过程中,使用的交互设备文件(键盘,鼠标,显示器)如表  11-1  所示。 

image.png

图  11-1  交互设备文件 

1.   输入输出标准说明,如图  11-2  所示。 

STDIN  标准输入,默认的设备是键盘,文件编号为:0。 

STDOUT  标准输出,默认的设备是显示器,文件编号为:1,也可以重定向到文件。 

STDERR  标准错误,默认的设备是显示器,文件编号为:2,也可以重定向到文件。 

image.png

图  11-2  输入输出标准 

2.   查看一个进程打开了哪些文件。 

语法:  ll /proc/进程 ID/fd    #其中进程 ID 需要换成对应的程序 ID 号。 

例 1:查看 vim 进程打开了哪些文件。 

# vim /etc/passwd    #打开 vim 程序。

# ps -axu | grep passwd  #在另一个终端查看 vim 进程 ID 号。 

root            4602    2.1    0.2 151600    5300 pts/2        S+      15:30      0:00 vim /etc/passwd 

# ll /proc/4602/fd            #查看打开的文件。 

总用量  0 

lrwx------ 1 root root 64 5 月    14 15:30 0 -> /dev/pts/2 

lrwx------ 1 root root 64 5 月    14 15:30 1 -> /dev/pts/2 

lrwx------ 1 root root 64 5 月    14 15:30 2 -> /dev/pts/2 

lrwx------ 1 root root 64 5 月    14 15:30 4 -> /etc/.passwd.swp 

注:  这些 0,1,2,4 就是文件的描述符。一个进程启动时,都会打开  3  个文件:标准输入、标准输出和标准出错处理。这 3  个文件分别对应文件描述符为  0、1 和 2 也就是宏替换 STDIN_FILENO、STDOUT_FILENO 和 STDERR_FILENO。 

/proc/进程 ID/fd        #其中进程 ID 为对应进程的 PID 号,这个 fd 目录下,专门存文件描述符。 

注:对文件描述符的操作就是对文件本身的操作,我可以直接通过操作文件描述来修改文件。 

例 2:查看和临时设置一个进程最多可以打开几个文件,即:一个进程可以打开的文件描述符限制。

[root@xuegod63 ~]# ulimit -n              #查看一个进程最多可以同时打开的文件数。 

1024 

[root@xuegod63 ~]# ulimit -n 2048      #修改一个进程最多可以同时打开的文件数为 2048。 

[root@xuegod63 ~]# ulimit -n 

2048 

永久修改,会在第三阶段讲系统调优时详解讲解。

版权声明:
作者:WaterBear
链接:https://l-t.top/1375.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>