其他分享
首页 > 其他分享> > 第7、8章学习笔记(20191213兰毅达)

第7、8章学习笔记(20191213兰毅达)

作者:互联网

第7、8章学习笔记

一、知识点归纳

include <sys/types.h>#include <sys/stat.h>#include <unistd.h>

int stat(const char *file_name,struct stat *buf) ;int fstat(int filedes,struct stat *buf);
int lstat(const char *file_name,struct stat *buf) ;描述
这些函数会返回指定文件的信息。不需要拥有文件的访问权限即可获取该信息,但是需要指向文件的路径中所有指定目录的搜索权限。
stat按文件名统计指向文件,并在缓冲区中填写stat信息。
lstat与stat相同,除非是符号链接,统计链接本身,而不是链接所引用文件。所以,stat 和 1stat的区别是:stat遵循链接,但 lstat不是。
fstat与 stat相同,也只在文件名处说明filedes(由open ( 2)返回)所指向的打开文件。

二、实践与操作


三、问题与解决

1、文件描述符是什么,有什么作用吗?
解决:文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。POSIX标准要求每次打开文件时(含socket)必须使用当前进程中最小可用的文件描述符号码,因此,在网络通信过程中稍不注意就有可能造成串话。标准文件描述符图如下:

作用: 1. 由于进程级文件描述符表的存在,不同的进程中会出现相同的文件描述符,它们可能指向同一个文件,也可能指向不同的文件 2. 两个不同的文件描述符,若指向同一个打开文件句柄,将共享同一文件偏移量。因此,如果通过其中一个文件描述符来修改文件偏移量(由调用read()、write()或lseek()所致),那么从另一个描述符中也会观察到变化,无论这两个文件描述符是否属于不同进程,还是同一个进程,情况都是如此。3. 要获取和修改打开的文件标志(例如:O_APPEND、O_NONBLOCK和O_ASYNC),可执行fcntl()的F_GETFL和F_SETFL操作,其对作用域的约束与上一条颇为类似。4. 文件描述符标志(即,close-on-exec)为进程和文件描述符所私有。对这一标志的修改将不会影响同一进程或不同进程中的其他文件描述符
2、LINUX根磁盘分区满了怎么办?
解决思路:删...
1.使用 df -h 命令查看磁盘使用情况
2.查看知道是磁盘使用满了之后从服务器根目录使用du -h --max-depth=1命令查找出占用空间最多的文件夹,输入命令:ls –lhS 将文件以从大到小顺序展现
3.rm –f 前确认下是否要下载下来让开发人员分析日志。
在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
输入命令:/usr/sbin/lsof|grep deleted 确认删除文件是否被占用
然后就删删删

标签:文件,stat,int,fbuf,笔记,char,描述符,兰毅,20191213
来源: https://www.cnblogs.com/1301cn/p/15365595.html