文件操作(二) 其他总结

一、 文件操作

1、 获取文件属性

#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>int stat(const char *filename, struct stat *buf);
int fstat(int fd, struct stat *buf);
int lstat(const char *filename, struct stat *buf);部分常用结构体成员:st_mode  : 文件的类型和存取权限st_nlink : 文件硬连接数目st_uid   : 文件所有者的用户idst_gid   : 文件所有者的组idst_size  : 文件大小st_mtime : 文件最后修改时间st_atime : 文件最后访问时间st_ctime : 文件最后(文件所有者、所有组、权限)更改时间//输出时间时要用ctime()函数将时间转化为字符串输出printf("mtime: %s\n", ctime(buf.st_mtime));/*判断文件属性*/S_ISLNK : 链接文件S_ISREG : 一般文件S_ISDIR : 目录文件S_ISCHR : 字符设备文件S_ISBLK : 块设备文件S_ISFIFO: FIFO文件S_ISSOCK: socket文件

2、 设置文件属性

1) 修改文件权限

#include<sys/types.h>
#include<sys/stat.h>int chmod(const char *path, mode_t mode);//文件名
int fchmod(int fd, mode_t mode);//文件描述符

2) 修改文件用户id / 组id

#include<sys/types.h>
#include<unistd.h>int chown(const char *path, uid_t owner, gid_t group);//文件名
int fchown(int fd, uid_t owner, gid_t group);//文件描述符
int chown(const char *path, uid_t owner, gid_t group);//适于链接文件

3) 修改文件大小

#include<sys/types.h>
#include<unistd.h>int truncate(const char *path, off_t len);//文件名
int ftruncate(int fd, off_t len);//文件描述符

4) 修改文件时间

#include<sys/types.h>
#include<utime.h>
int utime(const char *filename, struct utimbuf *buf);struct utimbuf{time_t actime;//access timetime_t modtime;//modification time
}

2、 文件移动和删除

1) 文件移动

#include<stdio.h>
int rename(const char *oldname, const char *newname);

2) 文件删除

#include<unistd.h>
int unlink(const char *name);
int remove(const char *name);//若有进程打开了文件,则文件暂时不被删除,直到所有打开该文件的进程都结束时才被删除
//若name指向socket文件、FIFO文件或设备文件时,该name被删除,但已打开该文件的进程仍然可以使用这些文件

3、目录操作

1) 目录的创建和删除

#include<sys/types.h>
#include<sys/stat.h>
int mkdir(const char *name, mode_t mode);//需设置文件权限
int rmdir(const char *name);//只能删除空目录

2) 获取当前目录

#include<unistd.h>
char * getcwd(char *buf, size_t size);
char getwd(char *buf);
//获得绝对路径

2) 设置工作目录

#include<unistd.h>
int chdir(const char *path);
int fchdir(int fd);

4、获取目录信息

#include<sys/types.h>
#include<dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dir);
int closedir(DIR *dir);struct dirent{long d_ino;off_t off;unsigned short d_reclen;char d_name;//filename
}

二、 其他总结

    1、 磁盘分区分为主分区、扩展分区,而扩展分区有可分为若干逻辑分区,同时规定主分区、扩展分区之和最多为4个(原因:磁盘MBR分配有446字节,而分区表只占用64字节,而每个分区所存信息需要16字节,故最多有4个分区),扩展分区最多只能有1个。2、 block为1k的inode可存储最大单一文件的大小为16GB。inode分为12个直接、1间接、1双间接、1三间接:12个直接指向: 12 * 1K = 12K
间接 :  256 * 1K = 256K
双间接: 256 * 256 * 1K
三间接: 256 * 256 * 256 * 1K
总和:   12K + 256K + 256*256K + 256*256*256K = 16GB3、什么是格式化?电子计算机上指用一种系统软件对硬盘或软盘进行处理,使符合数据存储和读取的规定格式。为什么要进行格式化?每种操作系统所设置的文件属性、权限不同,为了存放这些文件所需的数据,就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】博弈知识汇总

有一种很有意思的游戏&#xff0c;就是有物体若干堆&#xff0c;可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干&#xff0c;规定最后取光物体者取胜。这是我国民间很古老的一个游戏&#xff0c;别看这游戏极其简单&#xff0c;却蕴含着深刻的数学原理。下面我们…

搞ACM的你伤不起(转)

笑喷了。。。。。。。。。劳资六年前开始搞ACM啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 从此踏上了尼玛不归路啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#x…

学计算机的你伤不起啊(转)

学计算机的你伤不起啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 老子六年前开始学计算机啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;于是踏上了尼玛不归路啊&#xff01;&#xff01;&#xff01;&#xff…

进程控制 (二) Others

1. 执行新程序 只列出几个常用的函数&#xff1a; #include <unistd.h> int execve(const char *path, char * const argv[], char * const envp[]);//envp[]为环境变量&#xff0c;可直接调用int execv(const char *path, char * const argv[]);//与execve&#xff08…

【转载】ACM中矩阵乘法的应用

copied from 大神s blog 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中&#xff0c;一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵&#xff0c;得到的结果是一个n行p列的矩阵&#xff0c;其中的第i行第j列位置上的数等于前一…

线程控制(一)

1. 线程执行顺序问题 #include <stdio.h> #include <string.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h>void *thread1(void *); void *thread2(void *);pthread_key_t key;void *thread1(void *arg){int a 1, *tsd &a…

Codeforces Round #324 (Div. 2) B. Kolya and Tanya

思路&#xff1a;因为题目说只要存在组ai??ai??n??ai??2n?≠?6就令人满意&#xff0c;也就是不满意的情况就是所有ai??ai??n??ai??2n?都等于6那就用所有的情况减去不满意的情况&#xff0c;总结: 直接用二分幂不知道为什么wa的要死&#xff0c;看到别人的题…

拓扑排序的题目集合

【HDU】1285确定比赛名次2094产生冠军2647Reward3342Legal or Not1811Rank of Tetris 拓扑并查集3231 Box Relations 三维拓扑【POJ】1094 Sorting It All Out Floyd拓扑2367 Genealogical tree3660 Cow Contest3687 Labeling Balls 神奇的拓扑1128Frame Stacking DFS版拓扑…

edward_mj退役经验帖

考完试了&#xff0c;也是时候补上退役帖了。考虑了一阵要怎么写&#xff0c;鉴于本文的目的主要是希望给后来的校队成员或者想参加这个竞赛的同学一个借鉴&#xff0c;最后还是决定用Q&A的形式。打ACM/ICPC有什么好处我觉得确切而言应该问把时间花在这上面有什么好处。提升…

C++学习笔记(一)

本文主要内容为C下的输入输出函数以及for循环中的C11新特性。 一、输入输出函数 1. cin cin 遇到 空格、回车、Tab结束输入&#xff0c; 且会将读到的空格、回车、Tab 丢弃&#xff0c;例&#xff1a; #include<iostream> using namespace std;int main(void) {char a…

为了更好——关于博客搬迁的说明

一开始没准备在网易安家的&#xff0c;可是由于博客和邮箱都在此处&#xff0c;访问会更加方便&#xff08;所以就稀里糊涂在这里安了家&#xff09;&#xff0c;但是后来发现网易的博客对用户并不友好&#xff08;广告低栏的注册&#xff09;&#xff0c;寻寻觅觅找了很多博客…

C++学习笔记(二)

本文将主要介绍const关键字的使用。 首先&#xff0c;说一下const是什么&#xff1a; const修饰的数据类型是指常类型&#xff0c;常类型的变量或对象的值是不能被更新的。 然后&#xff0c;我们来看一下这四处声明&#xff1a; const int a 1; //code1 const int *p &am…

关于Github的那点事儿

今天突然发现无法从本地git push到远程仓库了&#xff08;然而事实是网有点卡&#xff0c;github官网没更新过来&#xff0c;然而……ssh-key已经删了….&#xff09;&#xff0c;所以又重新添加ssh-key。 ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub 将显示的内容粘贴到github…

C++学习笔记(三)

1. 引用变量 引用是已定义变量的别名&#xff0c;若使用int & x a;&#xff0c;即将x作为a的引用&#xff0c;其中的&不是地址运算符&#xff0c;而是类型标识符的一部分。事实上&#xff0c;x与a指向的是同一块内存空间&#xff0c;对x进行操作即对a进行操作。必须在…

Rabbits —— HDU-6227

题意&#xff1a; 有n只兔子在不同的位置&#xff0c;任意一只兔子可以跳到其余任两只兔子&#xff08;必须保证它们中间有空位&#xff09;中间&#xff0c;问最多可移动多少次&#xff1f; 思路&#xff1a; 可看作从任一侧的兔子向中间插空&#xff0c;因此可以将所有兔子…

uva 10570——Meeting with Aliens

题意&#xff1a;输入1-n的排列&#xff0c;每次可以交换两个整数。用最少的次数把排列变成1-n的环状序列。 思路&#xff1a;枚举贪心。依次枚举环上所有的点&#xff0c;正序一遍&#xff0c;倒序一遍&#xff0c;然后贪心求的所需的最小步数&#xff08;贪心策略是1与1号交换…

I/O复用之 epoll

epoll 系统调用 1. 内核事件表 epoll使用一系列函数来完成任务&#xff0c;把用户关心的文件描述符中的事件放到内核里的一个事件表中&#xff0c;因此不用像select、poll那样每次调用都要重复传入文件描述符集或事件表。epoll需要一个文件描述符来唯一标识该事件表&#xff0…

uva 1153—— Keep the Customer Satisfied

题意&#xff1a;有n个工作&#xff0c;已知每个工作的开始时间和结束时间&#xff0c;问最多能完成多少工作。 思路&#xff1a;贪心。要想使得最后的结果最佳&#xff0c;那么开始的晚的&#xff0c;要在最后来做。在此基础上&#xff0c;需要保证先做开始的早的&#xff08;…

I/O复用之 EPOLLONESHOT 事件

EPOLLONESHOT 事件 EPOLLONESHOT 事件 1. 使用EPOLLONESHOT的原因及优点2. recv返回值 及 与errno的配合使用3. 示例程序 1. 使用EPOLLONESHOT的原因及优点 即使使用ET模式&#xff0c;一个socket上的某个事件还是可能被触发多次。比如&#xff1a;一个线程在读取完某个sock…

uva 1612——Guess

题意&#xff1a;有n个选手参加比赛&#xff0c;比赛有3个题目&#xff0c;每个选手每个题目都有一个评测之前的于得分&#xff0c;当通过题目时才可以得到相应分数&#xff0c;否则为0&#xff0c;然后按照得分排名&#xff0c;id小的排在前面&#xff0c;现在给定选手的于得分…