龙潭书斋 -- 358




创建目录int mkdir( const char *dirname, mode_t mode ); 定义于sys/stat.h头文件中,调用成功返回0,否则返回-1次函数穿件创建一个新的空目录里,目录中会自动创建 . 和 . . 目录项对于目录,通畅要至少设置一个执行权限位,以允许访问该目录中的文件名 删除空目录int rmdir( const char *dirname, mode_t mode ); 定义于unistd.h头文件中,调用成功返回0,否则返回-1只能用于删除空目录,本质是调用unlink完成的 读目录对某个目录具有访问权限的任意用户都可以读取该目录,但只有内核才能写目录,以防止文件系统产生混乱。目录的写权限和执行权限决定了是否能在该目录中删除和创建文件,而不是针对目录本身 以下函数都定义于dirent.h中 DIR* opendir (const char * path ); 若调用成功返回指针,出错返回NULL struct dirent* readdir(DIR* dir_handle); 若调用成功返回指针,若在目录结尾或出错返回NULL void rewinddir(DIR *dp);  
#读书笔记    #技术帖    #linux    #unix   

200x200


.sql_table p{ margin:0px; font-family:SimSun; } 文件时间每个文件都有三个时间字段: |--------------+----------------

#读书笔记    #技术帖    #操作系统    #os   
简介符号链接是指向一个文件的间接指针,它与硬链接的区别在于硬链接直接指向文件的i节点,并且硬链接有以下限制,而符号链接没有:硬链接通常要求链接和文件在同一文件系统中只有超级用户才能创建指向目录的硬链接而任何用户都可以创建指向目录的或其他文件系统中文件的符号链接 需要注意的是,有些函数在处理符号链接时,会跟随符号链接处理其指向的文件,而另一些则只处理符号链接本身不跟随符号链接的函数:lchown、lstat 、readlink、remove、rename、unlink跟随符号链接的函数:access、chdir、chmod、creat、exec、link、open、opendir、pathconf、stat、truncatechown 函数根据取决于具体实现 另外,同时使用O_CREAT和O_EXCL两个参数调用open函数,如果路径名引用的是符号链接,函数将返回出错,并将errno设置为EEXIST,以防止进程被符号链接引诱到不适当的文件处读写当open一个符号链接时,实际打开的却是其指向的文件,如果符号链接所指向的文件不存在,则会返回出错 符号链接引入的循环对于指向其父目录的符号链接,在遍历时可能会出现循环,大多数函数在遇到这种情况时会返回置为ELOOP的errno。消除循环是很容易的,因为unlink是不跟随符号链接的,但是如果
#读书笔记    #技术帖    #linux    #unix   

200x200


UNIX文件系统基本结构目前正在使用的UNIX文件系统有多种不同的实现,本节讨论传统的基于BSD的UNIX文件系统UFS我们可以把磁盘分为一个或多个分区,每个分区可以包含一个文件系统,如图 

#读书笔记    #操作系统    #os    #linux   
int truncate ( const char *pathname, off_t length ) int ftruncate ( int filedes, off_t length ) 调用成功返回0,否则返回-1这两个函数实现把现有文件长度截短为length字节,若文件以前的长度小于length,则其效果与具体的实现有关 var CODE_DIVS=[{"id":"editor_a","mode":"c_cpp"}];
#读书笔记    #技术帖    #linux    #unix   

200x200


创建文件模式屏蔽字 -- umaskmode_t umask ( mode_t cmask ); 返回以前的文件模式创建屏蔽字在进程创建一个新文件或目录时,就一定会使用文

#读书笔记    #技术帖    #linux    #unix   
当open函数打开一个文件时,内核以进程有效用户ID和有效组ID为基础执行其访问权限测试,access函数用实际用户ID和实际组ID来测试其访问能力int access (const char *filename, int amode); mode常量设置于 <unistd.h>R_OK        测试读权限W_OK        测试写权限X_OK        测试执行权限F_OK        测试文件是否存在 var CODE_DIVS=[{"id":"editor_a","mode":"c_cpp"}];
#读书笔记    #技术帖    #linux    #unix   
设置用户ID和设置组ID与一个进程相关联的ID有6个或更多,他们是:实际用户ID、实际组ID、有效用户ID、有效组ID、附加组ID、保存的设置用户ID、保存的设置组ID其中,实际用户ID和实际组ID标识登录用户究竟是谁,一般在一个登录会话间这些值并不改变,但超级用户可以改变他们有效用户ID、有效组ID以及附加组ID决定了我们的访问权限保存的设置用户ID和保存的设置组ID在执行一个程序时包含了有效用户ID和有效组ID的副本通常,有效用户ID等于实际用户ID,有效组ID等于实际组ID每一个文件都有一个所有者和组所有者,所有者由stat结构中的st_uid成员表示,组所有者则用st_gid表示可以在文件模式字st_mode中设置一个特殊标志,其含义是“当执行此文件时,将进程有效用户ID设置为文件所有者的用户ID(st_uid)”,与此类似 ,在文件模式字中可以设置另一位,它使将执行此文件的进程的有效组ID设置为文件的组所有者ID(st_gid),这两位分别是设置用户ID位和设置组ID位例如,若文件所有者是超级用户,这样设置后,当文件执行时,无论执行此文件的实际用户ID是什么都可以获取到超级用户权限,如UNIX中的passwd(1)允许任意用户改变其口令,该程序是一个设置用户ID程序这两位可以通过常量S_ISUID和S_ISGID测试 文件访问权限定义于 sy
#读书笔记    #技术帖    #linux    #unix   
普通文件用于存储用户指定的信息,分为ASCII文件和二进制文件 目录文件包含目录下文件的名字及指向这些文件的指针,任何具有读权限的进程都可以读目录文件,但只有内核可以直接写目录文件,进程只有使用指定函数才可以更改目录文件 块特殊文件这种文件类型提供对设备带缓冲的访问,每次访问以固定长度为单位 字符特殊文件这种文件提供对设备不带缓冲的访问,每次访问长度可变,系统中所有设备要么是字符特殊文件,要么是块特殊文件 FIFO这种类型文件用于进程间通信,又是也将其称为管道 socket也称为套接字,用于进程间网络通信,也可用于在一台宿主机的进程间非网络通信 符号链接指向另一文件 文件类型宏 <sys/stat.h> S_ISREG ( )    普通文件S_ISDIR ( )    目录文件S_ISCHR ( )    字符特殊文件S_ISBLK ( )    块特殊文件S_ISFIFO ( )   管道或F
#读书笔记    #技术帖    #linux    #unix   
函数原型int stat(const char *path, struct stat *buffer); int fstat(int fd, struct stat *buf); int lstat(const char *path, struct stat *buf);  函数说明:定义于unistd.h中,stat结构体定义于sys/stat.h头文件中 一旦给出pathname,stat函数就返回与此命名文件有关的信息结构。fstat函数获取已在描述符fd上打开的文件的有关信息lstat函数类似于stat函数,但是当命名的文件是一个符号链接时,lstat返回该符号链接的有关信息,而不是由该符号链接所引用的文件的信息 第二个参数都是buf,是一个指针,它指向一个用户必须提供的结构,这些函数填写由buf指向的结构,该结构可能因为不同的实现会有所不同,但基本形式是:struct stat {   dev_t st_dev; /* 文件所在设备的标识 */   ino_t st_ino; /* 文件结点号 */   mode_t st_mode; /* 文件模式,文件、目录等 */   nlink_t st_nlink; /* 硬连接数 */ uid_t st_uid; /* 文件用户标识 */   gi
#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号