博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux系统文件类型 特殊文件 和 进程间通信机制
阅读量:6250 次
发布时间:2019-06-22

本文共 1380 字,大约阅读时间需要 4 分钟。

Linux主要文件类型:

1:普通文件(第一个属性用“-”表示)
普通文件就是我们通常访问的文件,由ll命令显示出来的属性中,第一个属性为“-”,例如【-rwxr-----】。我们根据文件的内容,又可以将普通文件分为以下几种。
纯文本文件(ASCII):Linux系统中最多的一种文件类型,它的内容我们可以直接读取。文件的内容一般都是字母、数字以及一些符号等。配置文件基本都属于这种文件类型。可以使用cat命令查看文件内容。
二进制文件(Binary):系统其实只认识并且可以执行二进制文件。Linux中的可执行文件就是这种格式,当然脚本、文本方式的批处理文件虽然可执行,但不是二进制文件。例如命令cat就是二进制文件。
数据格式的文件(Data):有些程序在运行过程中会读取某些特定格式的文件,这些特定格式的文件可以称为数据文件。比如,Linux用户在登陆系统时,会将登陆数据记录在/var/log/wtmp文件内,这个文件就是一个数据文件。
2:目录文件(directory)(第一个属性用“d”表示)
目录文件就是目录,相当于windows中的文件夹。
3:符号链接文件(link)(第一个属性用“l”表示)
符号链接相当于windows中的快捷方式。在Linux中有两种链接方式,软链接(符号链接)和硬链接。
4:设备文件(设备文件分为块设备文件和字符设备文件)或称为 虚拟设备文件,用来访问硬件设备,包括硬盘、键盘、光驱、打印机等设备。
块设备文件(block)(第一个属性用“b”表示):块设备是用来存储数据以供系统访问的接口设备,比如硬盘等。
字符设备文件(character)(第一个属性用“c”表示):字符设备就是拥有串行端口的接口设备,比如键盘、鼠标等。
每一硬件至少和一个设备文件相关联。命令或应用程序通过访问设备文件来访问相应硬件设备。 
这个种类的文件,是用mknode来创建,用rm来删除,目前在最新的Linux发行版本中,我们一般不用自己来创建设备文件。因为这些文件是和内核相关联的。
特殊文件一般放在/dev下面。这个目录包含所有的设备文件。应用程序和命令读写设备文件的方式和普通文件相同。 这样Linux做到了设备无关性。

--进程间通信机制 Linux有一些机制允许进程间进行通信,叫进程间通信机制,简称IPC。

3种常用的IPC:管道,命令管道(FIFOs),sockets 
****管道是一块内核态内存,允许两个进程进行相互通信。这两个进程运行在同一台计算机上,并且相互关联。
5:管道文件(FIFO,pipe)(第一个属性用“p”表示)
****FIFO是一个文件。允许同一台计算机上的两个进程进行通信,这两个进程不必相互关联
管道文件主要用来解决多个程序同时访问一个文件所造成的错误。
6:套接字文件(sockets)(第一个属性用“s”表示)
****socket是内核态内存上的一个数据结构,运行在不同计算机上的进程可以使用socket进行通信
套接字文件通常用户网络数据连接。我们可以启动一个程序来监听客户端的请求,客户端就可以通过套接字来进行数据通信。通常可以在/var/run/目录中看到这类文件。

 

 

 

转载于:https://www.cnblogs.com/QQ308368388/p/3606646.html

你可能感兴趣的文章
2011-12-14 调用cmd并获得输入输出+网络访问
查看>>
解决nim db_mysql could not load: libmysql.dll的问题
查看>>
JavaScript之再谈回调与闭包
查看>>
优化PHP代码的一些建议
查看>>
android学习网站
查看>>
TCP定时器详解
查看>>
if判断,switch语句
查看>>
postgresql中字段为空的查询
查看>>
Arduino入门之前
查看>>
JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)
查看>>
zoj 1904 Beavergnaw 计算圆柱和圆台的体积
查看>>
整理了一份招PHP高级工程师的面试题(转)
查看>>
Document对象中的一些重要的属性和方法(笔记)
查看>>
学习Raft算法的笔记
查看>>
[LeetCode]题解(python):053-Maximum Subarray
查看>>
SharePoint中的用户信息和检索的有关知识
查看>>
Linux系统在启动过程中grub引导文件丢失的解决方法
查看>>
day15-JavaScript条件语句和函数的定义
查看>>
使用acl网络通信库的 redis c++ 模块开发 redis 应用
查看>>
Geek的入门神器:micropython-能跑python的stm32开发板
查看>>