使用C查找文件权限

时间:2013-08-30 11:22:34

标签: c file permissions copy posix

如何使用C找到文件的权限?

我正在制作文件复制程序,一切正常,但它不会复制新文件的文件权限。

现在我正在使用fcntl.h和open()以及creat()打开文件并制作目标文件,但它正在失去permisisons。

我希望有一个命令可以将文件权限读取到0644或0777这样的数字,然后我在creat()中使用该数字来制作该文件。这样的命令是否存在?

修改的 感谢您的帮助,我使用以下代码

struct stat status;
mode_t permissions;
stat("path_to_file", &status);
permissions = status.st_mode;' 

然后在creat();

中使用权限

3 个答案:

答案 0 :(得分:1)

使用stat

以上链接还会为您提供示例代码!

/* Print out type, permissions, and number of links. */
printf("%10.10s", sperm (statbuf.st_mode));
printf("%4d", statbuf.st_nlink);

答案 1 :(得分:0)

stat()功能将获得您所需的功能:http://linux.die.net/man/2/stat

请注意,umask()http://linux.die.net/man/2/umask)会对实际使用的权限产生影响。

答案 2 :(得分:0)

here

   struct stat sb;
   mode_t file_permision; // read file permission before copy

   if (stat("source_file_name", &sb) == -1) {
        exit(EXIT_FAILURE);
    }

 file_permision = sb.st_mode;

//Then create new file

 creat("destination_file_name", file_permision );