新闻  |   论坛  |   博客  |   在线研讨会
UNIX环境高级编程-4 文件和目录
mayer | 2009-07-14 18:35:21    阅读:1340   发布文章

UNIX环境高级编程-4 文件和目录

 

总算看完了I/O,下面看看文件目录到底怎么回事吧!

这章讨论的中心是三个s t a t函数以及它们所返回的信息。
//---------------------------------------------------------------------
// 函数原型为
#include <sys/types.h>
#include <sys/stat.h>
int stat(const char *pathname, struct stat *buf);
int fstat(int filedes, struct stat *buf);
int lstat(const char *pathname, struct stat *buf);
//---------------------------------------------------------------------
三个函数的返回:若成功则为0,若出错则为-1
1. 对于第一个参数
? 给定一个pathname,stat函数返回一个与此命名文件有关的信息结构。
? fstat函数获得已在描述符filedes上打开的文件的有关信息。
? lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。
2. 第二个参数是个指针,它指向一个我们应提供的结构。这些函数填写由buf指向的结构。该结构的实际定义可能随实现而有所不同,但其基本形式是:
struct stat{
    mode_t st_mode;       /* file type & mode (permissions)   */
    ino_t    st_ino;          /* i_node number (serial number)   */
    dev_t   st_dev;         /* device number (filesystem)       */
    dev_t   st_rdev;        /* device number for special files   */
    nlink_t  st_nlink;        /* number of links                       */
    uid_t    st_uid;          /* user ID of owner                     */
    gid_t    st_gid;          /* group ID of owner                   */
    off_t    st_size;         /* size of bytes, for regular files    */
    time_t  st_atime;       /* time of last access                 */
    time_t  st_mtime;      /* time of last modification           */
    time_t  st_ctime;       /* time of last file status change   */
    long     st_blksizes;    /* best I/O block size                  */
    long     st_blocks;      /* number of 512-byte blocks allocated */
};

1. 一个文件相关的函数umask()
umask()
//-----------------------------------------------------------------
// 函数原型
#include <sys/types.h>
#include <sys/stat.h>
mode_t umask(mode_t cmask);
// 返回:以前的文件方式创建屏蔽字
//-----------------------------------------------------------------
函数为进程设置文件方式创建屏蔽字,并返回以前的值。
在进程创建一个新文件或新目录时,就一定会使用文件方式创建屏蔽字。
在文件方式创建屏蔽字中为1的位,在文件mode中的相应位将被转换为0。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客