测试文件是否具有所需权限的好方法是什么?

时间:2009-12-11 02:23:55

标签: c++ file permissions

我看到ifstream :: open()返回void并且没有提供任何方法来查看文件是否由于权限而未打开。什么是一个很好的api来测试C ++中当前进程的文件是否有读权限或写权限?

4 个答案:

答案 0 :(得分:2)

在unistd.h中尝试POSIX access()函数

答案 1 :(得分:2)

你也可以使用stat返回一堆信息,包括mode,uid和gid:

   struct stat {
       dev_t     st_dev;     /* ID of device containing file */
       ino_t     st_ino;     /* inode number */
       mode_t    st_mode;    /* protection */
       nlink_t   st_nlink;   /* number of hard links */
       uid_t     st_uid;     /* user ID of owner */
       gid_t     st_gid;     /* group ID of owner */
       dev_t     st_rdev;    /* device ID (if special file) */
       off_t     st_size;    /* total size, in bytes */
       blksize_t st_blksize; /* blocksize for file system I/O */
       blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
       time_t    st_atime;   /* time of last access */
       time_t    st_mtime;   /* time of last modification */
       time_t    st_ctime;   /* time of last status change */
   };

我不知道这些低级函数有很好的C ++包装器。

答案 2 :(得分:1)

如果您使用的是Windows,则可以使用GetFileAttributesEx来检查文件的属性。如果是只读的,则可能需要调用SetFileAttributes来取消设置只读标志。

答案 3 :(得分:0)

您可以使用chmod命令。 它有3位数字,分别对应于所有者,组,其他用户 777代表最大权限。