码迷,mamicode.com
首页 > 其他好文 > 详细

FILE、inode、fork和vfork

时间:2016-04-09 01:45:52      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:linux的知识点file、inode、fork和vfork

1、FILE文件指针

a>.指向进程用户区中的 FILE 结构的数据结构;

b>.FILE 结构包括:I/O缓冲区、文件描述符(文件描述表的一个索引);

c>.FILE 结构中含有文件描述符,可以使用 fopen 来获得文件指针,然后从文件指针获取文件描述符(文件描述符唯一,而文件指针不唯一,但指向的对象唯一);

d>.FILE 结构函数可以看作是队 fd 直接操作的系统调用的封装,它的优点是带有I/O缓存,比 fd 具有跨平台性。


2、inode,软链接,硬链接

inode:记录档案属性;指针(指向文件内容放置的数据块的位置)。

一个 inode 通常为128字节,包括以下文件属性信息:

a.文件的拥有者和所属用户组;

b.文件的访问权限设定;

c.文件的类型;

d.文件的访问、修改等时间;

e.文件的大小;

f.文件的各种标志,如 SUID 和 SGID 等;

g.指向文件内容数据块的指针。

硬链接(Hard link):在某个目录下新增一个档案的关联数据。

软链接(符号链接):只是源文件的一个标志。

软硬链接的区别:

1>.使用硬链接时,磁盘的空间与 inode 的数目都不会改变(硬链接的数目会发生变化),hard link 只是在某个目录下多写入一个关联数据,所以不会用掉 inode 与磁盘空间;

软链接,有自己的 inode ,并在磁盘上有一小片空间存放路径名。

2>.硬链接不管有多少个,都指向的是同一个 i 节点,只是会把节点链接数增加,只要节点链接数不是0,文件都存在,当修改源文件或者链接文件任何一个的时候,其它的文件都会同步修改,如果删除互为硬链接关系的某个文件时,其它的文件并不受影响;

软链接不直接使用 i 节点作为文件指针,而是使用文件路径名作为指针。当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但我们却不能查看软链接的内容了。

3>.硬链接不可以跨文件系统,不可以对一个不存在的文件名链接,不可以对目录链接;

软连接可以。


3、fork 和 vfork 的区别

1>.fork 的子进程是父进程的副本,将获得父进程的数据空间、堆、栈等资源的副本,父子进程有一个想要修改数据/栈时,两个进程真正分裂(写时拷贝)

vfork 不会复制页表,在子进程调用 exec/exit 之前,在父进程的地址空间运行(父进程阻塞),也就是数据共享,可能会破坏父进程的数据结构/栈,导致失败。

2>.fork 父子进程执行的次序不确定;

vfork 保证子进程先运行,子进程调用 exec/exit 时,父进程才运行。

3>.vfork 可能会发生死锁,如果子进程依赖于父进程的动作。

FILE、inode、fork和vfork

标签:linux的知识点file、inode、fork和vfork

原文地址:http://green906.blog.51cto.com/10697569/1761938

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!