文件描述符
进程读文件之前,需要先打开文件,进程打开文件的时候,Linux会把这个文件关联到一个数字(称之为文件描述符),文件描述符是打开的文件在进程表中的一个索引。每个进程都有自己的一组已经打开的文件和各自的文件描述符,一旦打开某个文件,进程就可以通过文件描述符进行读写该文件。当进程不在需要文件的时候,它必须关闭文件,并且释放文件描述符。
Linux进程在启动的时候会打开3个文件:标准输入(文件描述符0),标准输出(文件描述符1),标准错误(文件描述符2)。
子进程会继承父进程的文件描述符,可以使用命令
ls /proc/self/fd
查看当前已经打开的文件描述符
exec n> outfile 表示打开一个输入文件outfile,并将他关联到文件描述符n;
exec m< infile 表示打开一个输入文件infile,并将它关联到文件描述符m上;
<& 和 >&
<& 和 >& 是文件复制符号
使用 exec n<&m 表示打开或者重定向文件描述符n,将其作为输入文件m的一个副本。
使用 exec n>&m 表示打开或者重定向文件描述符n,将其作为输出文件m的一个副本。
一个实例:
exec 4<&0 #使用4保存标准输入的副本
exec < $1 #重定向标准输入到文件1
exec 7>&1 #使用7保存标准输出
exec > $2 #重定向标准输出到文件2
cat - | tr a-z A-Z #将标准输入转换成大小输出到标准输出
exec 1>&7 7>&- # 使用7恢复标准输出,并关闭7
exec 0<&4 4<&- # 使用4恢复 标准输入,并关闭4
本文深入讲解了Linux系统中文件描述符的概念及其应用。包括进程如何使用文件描述符进行文件读写操作,文件描述符的继承特性,以及如何通过特定命令查看已打开的文件描述符。此外还介绍了如何通过exec命令来重定向文件描述符。
210

被折叠的 条评论
为什么被折叠?



