文件描述符是一个非负整数,而内核需要通过这个文件描述符才可以访问文件。当我们在系统中打开已有的文件或新建文件时,内核每次都会给特定的进程返回一个文件描述符,当进程需要对文件进行读或写操作时,都要依赖这个文件描述符进行。在Linux或类UNIX系统中内核默认会为每个进程创建三个标准的文件描述符,分别是0(标准输入)、1(标准输出)和2(标准错误)。
通过查看/proc/PID号/fd/目录下的文件,就可以查看每个进程拥有的所有文件描述符。
(相关资料图)
mango@mango-ubuntu:~/Documents/filedesc$ sudo ls -l /proc/$$/fdtotal 0lrwx------ 1 mango mango 64  5月 24 11:08 0 -> /dev/pts/1lrwx------ 1 mango mango 64  5月 24 11:08 1 -> /dev/pts/1lrwx------ 1 mango mango 64  5月 24 11:08 2 -> /dev/pts/1lrwx------ 1 mango mango 64  5月 24 11:08 255 -> /dev/pts/1当打开文件时系统内核就会为特定的进程自动创建对应的文件描述符。首先在一个Terminal中使用vi打开temp文件;
mango@mango-ubuntu:~/Documents/filedesc$ vi temp新打开一个Terminal并查看此进程的fd信息;
mango@mango-ubuntu:~/Documents/filedesc$ sudo ps -a   | grep vi   8888 pts/1    00:00:00 vimango@mango-ubuntu:~/Documents/filedesc$ sudo ls -l /proc/8888/fdtotal 0lrwx------ 1 mango mango 64  5月 24 11:22 0 -> /dev/pts/1lrwx------ 1 mango mango 64  5月 24 11:22 1 -> /dev/pts/1lrwx------ 1 mango mango 64  5月 24 11:22 2 -> /dev/pts/1lrwx------ 1 mango mango 64  5月 24 11:22 3 -> /home/mango/Documents/filedesc/.temp.swp我们也可以手动定义文件描述符,并通过文件描述符操作文件;
创建文件描述符
exec文件描述符 <> 文件名引用文件描述符
&文件描述符关闭文件描述符
exec文件描述符<&-exec文件描述符>&-我们touch一个文件,并将其文件描述符设置为10,并通过这个文件描述符来操作文件;
mango@mango-ubuntu:~/Documents/filedesc$ touch testfile11mango@mango-ubuntu:~/Documents/filedesc$ sudo ls -l /proc/$$/fdtotal 0lrwx------ 1 mango mango 64  5月 24 11:39 0 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 1 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 2 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 255 -> /dev/pts/2mango@mango-ubuntu:~/Documents/filedesc$ exec 10>testfile11mango@mango-ubuntu:~/Documents/filedesc$ echo hello >&10mango@mango-ubuntu:~/Documents/filedesc$ echo "world">&10mango@mango-ubuntu:~/Documents/filedesc$ cat testfile11helloworldmango@mango-ubuntu:~/Documents/filedesc$ exec 10<&-mango@mango-ubuntu:~/Documents/filedesc$ echo "closed">&10bash: 10: Bad file descriptor如果我们设置文件描述符只允许读,那么我们写文件的时候就会报错;
mango@mango-ubuntu:~/Documents/filedesc$ exec 11&11bash: echo: write error: Bad file descriptormango@mango-ubuntu:~/Documents/filedesc$ ls -l /proc/$$/fdtotal 0lrwx------ 1 mango mango 64  5月 24 11:39 0 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 1 -> /dev/pts/2lr-x------ 1 mango mango 64  5月 24 11:52 11 -> /home/mango/Documents/filedesc/testfile11lrwx------ 1 mango mango 64  5月 24 11:39 2 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 255 -> /dev/pts/2mango@mango-ubuntu:~/Documents/filedesc$ exec 11<&-mango@mango-ubuntu:~/Documents/filedesc$ ls -l /proc/$$/fdtotal 0lrwx------ 1 mango mango 64  5月 24 11:39 0 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 1 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 2 -> /dev/pts/2lrwx------ 1 mango mango 64  5月 24 11:39 255 -> /dev/pts/2 我们也可以创建一个同时可读可写的文件描述符;
mango@mango-ubuntu:~/Documents/filedesc$ exec 11<>testfile11mango@mango-ubuntu:~/Documents/filedesc$ cat <&11helloworldmango@mango-ubuntu:~/Documents/filedesc$ echo "read write" >&11mango@mango-ubuntu:~/Documents/filedesc$ cat <&11mango@mango-ubuntu:~/Documents/filedesc$ exec 11<>testfile11mango@mango-ubuntu:~/Documents/filedesc$ cat <&11helloworldread writemango@mango-ubuntu:~/Documents/filedesc$ exec 11<&-mango@mango-ubuntu:~/Documents/filedesc$ cat <&11bash: 11: Bad file descriptor                    
                上一篇:环球新动态:个人出租房产缴纳什么税(个人出租房产如何交税)
下一篇:最后一页
文件描述符是一个非负整数,而内核需要通过这个文件描述符才可以访问文件。当我们在系统中打开已有的文件或
1、自2008年3月1日起,对于个人按市场价格出租的住房,不论是居住还和生产经营,营业税按1 5%征收,房产税按4%征收
有些人经常讨论那个话题,就是买房子买还是不买?买房好还是租房好。其实我们可以除了自己的那需求之外,还
1、金朝鼎盛时期统治疆域包括今天的中国大陆淮河北部、秦岭东北大部分地区和俄罗斯联邦的远东地区。2、疆域
《F1极速赛车》是一款体育类网页游戏。游戏大小是38M。本文到此结束,希望对大家有所帮助。
关于浩浩汤汤,浩浩汤汤这个很多人还不知道,现在让我们一起来看看吧!1、浩浩汤汤【拼音】:hàoh
1、踢狗游戏中心客户端遇到点小问题。2、不久就会好的。本文分享完毕,希望对大家有所帮助。
1、困难模式怎么启动就不介绍了。我会一个个打败boss,最后在丛林神殿打败它。2、在地牢门口刷新四个邪恶的
1、歌名:我很丑。2、可是我很温柔演唱歌手:赵传专辑类别:国语专辑1CD专辑风格:流行 Pop发行公司:
在1786年问世的《降E大调三重奏》,莫扎特创造性地将这三样乐器编排在一起,在他心中,这是最理想的室内乐
不羡明月知简谱双手,不羡明月知简谱这个很多人还不知道,现在让我们一起来看看吧!1、《不羡》的简谱如下:
1、湖南文理学院法学怎么样第8组有16个专业,分别为历史学(师范)(历史)、英语(师范)(历史)、日语(历史
欢迎观看本篇文章,小柴来为大家解答以上问题。苹果app商店老是无法连接,苹果app商店老是无法连接的原因很
新湖南,主流新媒体,移动新门户。-分享自@新湖南
视频加载中 河北省第六届(沧州)园林博览会于5月26日在沧州市开幕。园博园丰富多彩的园林盛景,给市民游
5月27日电,5月25-26日,亚太经合组织(APEC)第29届贸易部长会议在美国底特律举行。商务部部长王文涛率团出席会
25日,长城汽车发布声明称,4月11日向生态环境部、国家市场监督管理总局、工业和信息化部递交举报材料
点击蓝字 关注我们智能电源和智能感知技术的领先企业安森美(onsemi,美国纳斯达克上市代号:ON),于美国
我在东北玩泥巴歌词,大家一起来看看吧很多人还不知道,现在让我们一起来看看吧!1、《我在东北玩泥巴》。2
【环球时报驻日本特派记者岳林炜】日本在25日和26日两天,连续发生两起枪击案,共造成5人死亡。据日本共同
劳动教育是“做中学”和“学中做”的教育,是知行合一的教育。为了礼赞劳动创造,讴歌工匠精神,培养劳...
中信重工(601608)5月26日晚间公告,为紧抓当前新能源领域发展的重大机遇,公司拟联合中信戴卡等合作方合资
今天来聊聊关于北京大兴区邮编号码,北京大兴区邮编的文章,现在就为大家来简单介绍下北京大兴区邮编号码,
虽然与年龄相关的脑部疾病(如阿尔茨海默病)通常在个人的一生中发展缓慢,但通常直到症状开始后才被发现。考
今天小红来为大家带来的是谭善爱打老兵事件图片,谭善爱打老兵处理结果,让我们一起往下看看吧!1、可能表