c语言基础(十一)

本文深入探讨了静态文件(inode)和动态文件(vnode)的概念及其在硬盘与内存中的表现形式,同时介绍了文件属性、文件与流的区别以及文件复制的方式,并详细解释了服务器端与客户端的socket通信过程。
摘要由CSDN通过智能技术生成

文件:
1、静态文件(inode)
硬盘中的文件,就是静态文件。文件都是以多个块和多个扇区组成的。一般情况,一个扇区(512字节),64个扇区组成一个块。在硬盘中,对文件管理有一个特定规则(文件管理表+真实的内容):文件管理表,这个表中是以文件为单位提供了各个文件的所有信息 (每一个文件信息表就对应一个结构体,这个结构体就称之为inode,也叫i节点,这个文件的包含的多少块、多少扇区),而我们通过查找这个表就可以找到我们所需要文件的内容。
我们找文件,通过(文件名字)找的。第一步:在文件管理表中,找到这个文件的名字,第二部,访问这个文件。U盘格式化:1、快速格式化,清除了你的文件管理表,文件系统就找不到你所需要的文件名字 ,你的真实内容还在硬盘里,可以部分恢复 2、彻底格式化,这个就是把文件真实内容也清除掉了,u盘不能通过软件技术恢复了,必须借助国家安全机构(通过物理机制,通过硬件的记忆恢复)。
联系:生活中,处理小文件的一个手段,文件压缩。把扇区的空余字节都利用起来,减少了占用硬盘上的空间。硬盘喜欢大文件。
2、动态文件(vnode),在内存中。
一个程序的运行就是一个进程,而我们打开的文件就属于这个进程。而操作系统对于每一个进程都有一个结构体进行管理,这个管理当前进程所有信息的结构体,我们就叫做(进程信息表)。这个表中有一个指针指向我们的文件管理表,这个文件管理表就包含了本进程打开的所有文件,通过查找文件管理表的index(文件描述符fd,相当于这个结构体数组的下标),就得到了我们的文件所有信息的结构体(Vnode,V节点),而这个结构体的指针就是文件指针。
文件属性:
//指的是:文件的内容发生改变
最近更改:2018-01-25 18:11:16.082959503 +0800
//指的是:文件的权限发生改变
最近改动:2018-01-25 18:11:16.082959503 +0800
3、文件与流
系统级别文件操作函数:文件IO;标准库提供的操作文件函数:标准IO.区别在于,可移植性。
文件IO可以完成对文件所有操作,但是效率不高,所以出现使用标准IO。但是你的知道,标准IO最终也是通过文件IO实现的。
流:字符流的意思。读写文件的时候,是一个一个字符操作的,连续进行。文件内容中是不分,行紧紧连在一起的。

文件复制:1、连续打开同一个文件(inode) 2、C语言里API(dup、dup2)3、多个进程打开同一文件

服务器:
1、建立一个socket通信,相当于(open)作用。
2、服务器端的结构体进行填充:struct sockaddr_in
3、绑定网络结构体信息和这个网络通信fd(由第一步得到的文件描述符)
4、监听这个ip和port:listen
5、等待客户端的连接:accept。是一个阻塞函数, 创建一个连接通信的fd
6、至于谁先发数据,没有规定。两者(s/c)都可以。但是要注意点:一旦确定某一方发送数据,另一方就必须接收数据。

客户端:
1、建立一个socket通信,相当于(open)作用。
2、客户端的结构体进行填充:struct addr_in,客户端的port服务器没有一点关系。
2.1、服务器端的结构体进行填充:struct addr_in
3、绑定网络结构体信息和这个网络通信fd(由第一步得到的文件描述符)(可有可无)
4、客户端连接你的服务器:connect(fd, 服务器的结构体)
perror:
只有错误编码被设定errno的函数,才可以用perror(printf 0f errno).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值