shell脚本中文件描述符
文件描述符特征
- 文件描述符是一个非负整数,内核需要通过这个文件描述符才可以访问文件
- 当在系统中打开已有的文件或者新建文件时,内核每次都会给特定的进程返回一个文件描述符,进程需要对文件进行读或写操作时,都要依赖这个文件描述符
- 文件描述符就像一个索引,指向系统中对应的文件
- 内核默认为每个进程创建3个标准的文件描述符,分别为0标准输入、1标准输出、2标准错误
- 文件描述符中还包含有很多文件相关的信息,如权限、文件偏移量等。使用文件描述符读写文件要注意文件偏移量指针的变化情况
查看文件描述符
[root@mao_aliyunserver bin]
14963
[root@mao_aliyunserver bin]
total 0
lrwx------ 1 root root 64 Feb 10 23:04 0 -> /dev/pts/3
lrwx------ 1 root root 64 Feb 10 23:04 1 -> /dev/pts/3
l-wx------ 1 root root 64 Feb 10 23:04 2 -> /dev/null
lrwx------ 1 root root 64 Feb 10 23:04 3 -> /dev/pts/3
lr-x------ 1 root root 64 Feb 10 23:04 4 -> /proc/stat
lr-x------ 1 root root 64 Feb 10 23:04 5 -> /proc/uptime
lr-x------ 1 root root 64 Feb 10 23:04 6 -> /proc/meminfo
lr-x------ 1 root root 64 Feb 10 23:04 7 -> /proc/loadavg
创建和关闭文件描述符
[root@mao_aliyunserver bin]
[root@mao_aliyunserver bin]
[root@mao_aliyunserver bin]
[root@mao_aliyunserver bin]
[root@mao_aliyunserver bin]
我爱你中国
亲爱的母亲
[root@mao_aliyunserver bin]
[root@mao_aliyunserver bin]
-bash: 5: Bad file descriptor