全部博文(298)
分类: Python/Ruby
2012-02-18 11:37:28
[Shell]文件描述符
转自:http://zhu8337797.blog.163.com/blog/static/170617549201161955814278/
Linux系统中, 每当进程打开一个文件时,系统就为其分配一个唯一的整型文件描述符,用来标识这个文件。大家知道,标准C中每个进程默认打开的有三个文件,标准输入,标准输出,标准错误,分别用一个FILE结构的指针来表示,即stdin,stout,sterr,这三个结构分别维护着三个文件描述符0,1,2。
打开文件描述符
Shell中,0,1,2是默认可用的三个描述符,为了利用其它文件描述符来标识特定文件,我们需要使用exec命令来打开该文件,并指定一个数字作为描述符:
exec m> outfile
exec n< infile
第一行以输出方式打开文件outfile并且赋予文件描述符m,第二行以输入方式打开文件infile并且赋予文件描述符n。
复制文件描述符
符号<&可以复制一个输入描述符,符号>&可以复制一个输出描述符:
exec n<&m
以exec命令打开文件描述符n并将其作为文件描述符m的副本。
关闭文件描述符
exec n<&-
exec m<&-
以exec命令关闭文件描述符n和文件描述符m。