千锋教育-做有情怀、有良心、有品质的IT职业教育机构

Linux基础培训知识解析之文件描述符

时间:2018-03-15 17:08:37  |  来源:千锋教育郑州校区  |  作者:

   Linux系统是当今世界使用多的一种UNIX 类操作系统,以性和灵活性著称,Linux人才也是市场紧缺人才。很多参加Linux基础培训的人在初学习时都会被其庞大的知识点吓倒,而千锋老师的看法是,只要你有条理的去学习,理清知识点,你就能学好Linux。今天就来给大家分享一下Linux内核中文件描述符的相关知识。

  文件描述符是什么?

  在Linux系统操作中,文件可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了管理已被打开的文件所创建的索引,用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。需要注意的是文件描述符是非负整数,基于文件描述符的I/O操作兼容POSIX标准,在Linux系统中大量的系统调用都是依赖于文件描述符。

  Linux文件描述符如何理解?

  Linux系统将所有设备都当作文件来处理,而Linux用文件描述符来标识每个文件对象,主要有“0”、“1”、“2”。

图片9.png

  文件描述符0理解为我和计算机交互时的输入,而这个输入默认是指向键盘的;

  文件描述符1理解为我和计算机交互时的输出,而这个输出默认是指向显示器的;

  文件描述符2理解为我和计算机交互时,计算机出现错误时的输出,而这个输出默认是和文件描述符1指向一个位置。

  文件描述符与打开文件之间有什么关系?

  每一个文件描述符会与一个打开文件相对应,同时,不同的文件描述符也会指向同一个文件。相同的文件可以被不同的进程打开也可以在同一个进程中被多次打开。在这种情况下相同文件描述符有可能指向同一个文件,也有可能指向不同的文件。我们可以通过进程级的文件描述符表、系统级的打开文件描述符表以及文件系统的i-node表来进行具体情况具体分析。

  两个不同的文件描述符,若指向同一个打开文件句柄,将共享同一文件偏移量。因此,如果通过其中一个文件描述符来修改文件偏移量(由调用read()、write()或lseek()所致),那么从另一个描述符中也会观察到变化,无论这两个文件描述符是否属于不同进程,还是同一个进程,情况都是如此。

千锋云计算.png

  在很多Linux基础培训课程中,会涉及很多命令,那么文件描述符中相关的命令有哪些?

  lsof:是一个列出当前系统打开文件的工具,在终端下输入lsof即可显示系统打开的文件;

  tree:读取标准输入的数据,并将其内容输出成文件;

  command:调用指定的指令并执行,命令执行时不查询shell函数,command命令只能够执行shell内部的命令;

  PID:在内核中,每个线程都有自己的PID。

  user:useradd用于Linux中创建的新的系统用户,可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码,而可用userdel删除帐号。

  当然Linux培训基础知识很多,在此千锋老师就不一一列举了。基础知识是一个人在一个行业大展拳脚的基石,而实战经验是他能够脱颖而出的关键。如果你想成为理论与实战兼具的高端人才,建议你参加千锋郑州Linux培训班。红帽认证架构师领衔主讲,采用企业级设备讲解及搭建,涉及技能无缝衔接一线主流企业需求,让你轻松掌握企业核心技术,具备升职加薪的硬性技能。

新开班

  • ▪ JavaEE培训班 05.07 抢座
  • ▪ Python培训班 04.23 抢座
  • ▪ UI交互设计培训 04.16 抢座
  • ▪ HTML5培训班 04.09 抢座
  • ▪ Python培训班 03.26 抢座
  • ▪ HTML5培训班 03.12 爆满
  • ▪ JavaEE培训班 03.26 爆满
  • ▪ Python培训班 02.26 爆满
  • ▪ JavaEE培训班 01.22 开班
  • ▪ HTML5培训班 12.25 开班
  • 郑州地址:郑州市二七区航海中路60号海为科技园C区10层、12层
    咨询电话:0371-55911950 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 北京天丰利校区:北京市海淀区宝盛北里西区28号天丰利商城4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术广场服务楼2层、南区服务楼2层
    咨询电话:400-654-7778 010-82790226-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 深圳科技园校区:深圳市南山区科苑南路高新技术产业园R3-B栋5层
    深圳大学城校区:深圳市南山区留仙大道1201号大学城创客小镇16栋2楼、3楼
    深圳西部硅谷校区:深圳市宝安区宝安大道5010号西部硅谷B座A605-619
    咨询电话:0755-86681178/9-801
    面授课程:iOS培训、Android培训、HTML5培训、UI培训、PHP培训、JavaEE培训、好程序员
  • 上海地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-627-7899 021-65025129-602
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训、好程序员
  • 成都旅游校区:成都市一环路西二段17号四川旅游青羊校区内
    成都华立校区:成都一环路西二段17号华立大厦3楼
    咨询电话:028-83178771 028-61967740
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训、UI课程培训
  • 广州地址:广州市天河区元岗路310号智汇park创意园E座5层
    咨询电话:020-22119207 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 大连地址:大连市甘井子区软件园路2号B8座二楼
    咨询电话:0411-39026086 400-654-7778
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 武汉地址:武汉市东新区光谷大道77号金融港B26栋9楼
    咨询电话:027-59905909 027-59905908 027-59905902
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 西安南二环校区:西安市二环南路西段60号永安大厦4层
    西安科技园校区:西安市雁塔区高新六路52号立人科技园C座西区4层
    咨询电话:029-85260160 029-85261030 029-85260960
    面授课程:iOS课程培训、Android课程培训、HTML5课程培训
  • 杭州地址:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:0571-86893632 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训
  • 青岛校区地址:青岛市市南区金坛路17号青岛职业技术南校区实训楼A4层
    咨询电话:0532-80910752/3 010-82790226/7-801
    面授课程:iOS课程培训、Android课程培训、UI课程培训
  • 千锋教育微信号
    扫描加好友