第四章 文件和目录
本章主要围绕stat这个函数来讲的。
int stat(const char* pathname, struct stat* buf);
int fstat(int fd, struct stat* buf);
int lstat(const char* pathname, sttuct stat* buf); //如果是符号链接,返回符号链接的文件信息
struct stat{
mode_t st_mode;
ino_t st_ino;
dev_t st_dev;
dev_t st_rdev;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
off_t st_size;
time_t st_atime;
time_t st_mtime;
time_t st_ctime;
blksize_t st_blksize;
blkcnt_t st_blocks;
};
文件类型有普通文件、目录文件、字符设备文件、块设备文件、FIFO文件、socket文件、符号链接七种文件类型。保存在stat结构中的st_mode中,分别有宏可以测试文件类型。
设置用户ID和设置组ID
这两个是权限管理使用的。当设置了设置用户ID就会是运行用户的有效用户ID设置成这个文件的所有者,这样运行这个用户就获得了,这个文件所有者的权限。设置组也是一样的道理。一般是通过chmod +0xabc来设置用户ID和组ID位的其中x=4 设置用户ID位,x=2设置组ID位。这两个位是保存在st_mode中的,也有宏可以测试这个位是否存在。
新文件和目录的访问权限:
新文件的用户ID设置成进程的有效用户ID,组ID或者是文件所在目录的ID或者hi进程的有效用户ID。
int access(const char* pathname, int mode) //以实际用户来查看文件权限 mode 可以使R_OK (读) W_OK(写) X_OK(执行) F_OK(存在与否)
mode_t umask(mode_t cmask);//设置文件模式创建屏蔽字。
int chmod(const char* pathname, mode_tmode);//给文件赋权限。
int fchmod(int fd ,mode_t mode);//给打开的文件赋权限。
int chown(const char* pathname, uid_towner, gid_t group).//修改文件的用户ID和组ID
文件空洞。
int truncate(const char* pathname, off_tlength)//把文件截断长度为length
int ftruncate(int fd, off_t length);
文件系统:
上面这图是整个文件系统的概述。
上面这图是目录结构i节点和目录项之间的关系。也可以查看i节点和文件的关联(p87)
int link(const char* pathname, const char*newpath) //创建一个以pathname相同i节点的新目录项
int unlink(const char* pathname) //删除一个目录项
int remove(const char* pathname) //可以删除文件或者目录。
int rename(const char* oldname, const char*newpath) //文件更名
文件时间
stat结构有st_atime(访问时间[l1])、st_mtime(内容修改时间)、st_ctime(i节点信息修改时间)
目录操作
int mkdir(const char* pathnamer, mode_tmode)//创建一个空目录
int rmdir(const char* pathname)//删除空目录
DIR* opendir(const char* pathname)
struct dirent* readdir(DIR* dp);
closedir(DIR* dp);
void rewinddir(DIR* dp);
long telldir(DIR* dp)
void seekdir(DIR * dp, long loc)
分享到:
相关推荐
UNIX环境高级编程第三版源码,Linux编程经典。。。。。。
我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询。 2、stat系列函数 stat函数用来返回与文件有关的结构信息。stat系列函数有三种情况,分别对应文件名称、文件描述符和符号链接...
UNIX环境高级编程配套头文件与error.c文件
apue
本压缩包包含《Unix环境高级编程》中的所有例程和书中程序中用到的apue.h文件(在压缩包中include文件夹中)。
将libapue.a从编译好的APUE源码库中提取出来,与自己写的c源文件放在同一目录下,并有写好的Makefile文件,在任何Linux系统下都能工作
将apue.h和error.c两个文件copy到该目录下。(apue.h位于 your_apue_path/inlcude ; error.c位于your_apue_path/lib ) 以我的了路径为例: #cp /home/ucfree/apue.2e/inlcude/apue.h . #cp /home/ucfree/apue.2e/...
Unix环境高级编程apue.h文件及使用时遇到的问题的解决方案
apue部分习题答案,有需要的同学自行下载
APUE第一版源码组织文件 sourcefiles APUE
UNIX网络编程 APUE.CHM 经典的文件
本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进 程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括 如何创建数据库函数库,PostScript 打印机驱动...
APUE-Edition2-英文版 有检索目录 图灵经典书籍 APUE-Edition2-英文版 有检索目录 图灵经典书籍
本章开始讨论UNIX系统,先说明可用的文件I/O函数——打开文件、读文件、写文件等等。 大多数UNIX文件I/O只需用到5个函数: open read write lseek close 然后说明不同缓存器长度对read和write函数的影响。本章所...
通过实用案例讲解apue的使用,涉及文件操作,socket操作,信号,进程间通讯
apue代码包
Apue unix高级编程的源码
本章从程序设计人员的角度快速浏览 U N I X,并对书中引用的一些术语和概念进行简要的说明并给出实例。在以后各章中,将对这些概念作更详细的说明。本章也对不熟悉U N I X的程序设计人员简要介绍了U N I X提供的各种...
APUE3+代码+APUE2(中文).经典中的经典。我就不做过多介绍了
压缩包里面有两个东西 1.是如何配置好apue.h该同文件及使用。 2.附上本人修改后已经能使用的apue.h源代码src.tar.bz2