完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 michael_llh 于 2016-8-6 15:54 编辑 1.文件共享的概念 文件共享,从字面上我们就可以知道说这个概念是分享一个文件,但是具体的含义呢,我们常说的打印机共享,以及文件夹共享都有涉及到这个概念。那么在Linux底下,更加深入的角度来说,文件共享就是说同一个文件,同一个文件指的是同一个inode,同一个pathname,这个同一个文件有多个读写体共同操作。读写体就是我们说的程序执行,可以是多个进程,也可以一个进程中多次读取。 2.文件共享的意义 同一个文件被多个读写体共同操作有什么好处呢?举个简单的例子,比如迅雷在下载大文件的时候就是这样做的,一个很大的文件,他不是一次性从头下载都尾。而是多个读写体共同操作这个文件,那个部分资源多,就现在下载那部分,最后再拼合成中的文件。 从上图我们也可以看出,迅雷是通过对任务进行分块下载,最后整合成我们要下载的文件,提高了下载速度。 其他的应用场景,包括我们常说的家庭环境中,比如你有一个硬盘当中有很多电影,要分享给家人就可以通过文件共享的形式实现,这样就可以方便的让家人看到你的电影,而无需在重新下载一份了。 当然在工作中协同工作也是非常有帮助的。 3. 文件共享的核心 文件共享的核心是让多个文件描述符指向同一个文件。围绕这个核心我们就可以来实现相应的程序编写。 4. 文件共享常见的3种情况: a.同一个进程中多次使用Open打开同一个文件 b.不同进程中使用Open打开同一个文件 c.用Linux底下的系统调用dup和dup2实现文件描述符的复制 5. 文件描述符的概念 文件描述符的本质是一个数字,这个数字是进程表当中的文件描述符表的一个表项,Linux进程通过文件描述符找到文件表指针,间接得到这个文件的文件表。 6. 文件描述符的最小数值 在我们使用Open函数打开或者创建一个文件的时候,Open函数的返回值是一个有Linux系统自动分配的一个未被使用的最小的文件描述符。但是我们在一个进程开始的时候得到的最小文件描述符是3而不是0,这里我们需要明白一点就是我们的0,1,2三个描述符已经被系统暂用了。 这三个描述符分别是标准输入对应0,一般对应我们的键盘的设备文件,标准输出对应1,一般对应我们的LCD显示器的设备文件,标准错误对应2。总的三个,所以我们得到的最小的文件描述符中是3。这一点需要大家注意。 7. dup和dup2的应用 很重要一点,当我们在使用这些函数的时候我们应该去灵活的使用它,不应该死记硬背,比如说我们对于函数的形参输入有哪些,一个方面我们可以选择直接百度进行查找相关的内容,另外一方面我们可以直接查看Linux的man手册直接看到函数原型已经相应要包含的头文件有哪些。 dup(旧的文件描述符),他的返回值是一个新的文件描述符 dup2(旧的文件描述符,指定的文件描述符),同样返回值的是一个新的文件描述符,同dup不同的是dup2可以指定返回的文件描述符是多少,如果函数成功执行的话返回值文件描述符应该和指定的内文件描述符是一样的,两者的数值一样。 8. 命令行的重定位符号 “>” 我们常见的一些shell命令,包括ls,pwd等等这些命令可以直接输出相应的信息到我们的终端上面我们可以直接看到相应的结果。我们可以通过重定位符号将其输出到我们指定的文件当中去。 例如: ls > 1.txt 那么ls所得到的该文件夹的内容就会直接输出到我们的1.txt上面了,而不会在我们的终端上面进行显示了。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
「含关键代码」基于AM3352/AM3354/AM3359的Linux开发案例分享
4873 浏览 0 评论
87365 浏览 0 评论
【高手问答】如何做到精通linux技术?资深工程师带你突破难点
4686 浏览 2 评论
3572 浏览 2 评论
解读Linux :先从创建一个文件夹用来存放jdk压缩文件开始
2459 浏览 0 评论
1954浏览 3评论
这是i.mx6ull的关于usb的宏定义,能解释下这些宏定义的意思
1322浏览 1评论
1233浏览 1评论
求解:aarch64交叉编译工具已经安装成功,环境变量已经配置,怎么将系统架构切换为ARM的架构
1301浏览 0评论
电脑和虚拟机可以互ping,电脑和开发板也可以互ping,但是虚拟机和开发板ping不通是什么原因
1215浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 19:34 , Processed in 1.384513 second(s), Total 69, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号