0

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

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

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

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

编辑 感谢您的所有帮助,我得到了它使用以下代码

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

然后在 creat() 中使用权限;

4

3 回答 3

1

使用stat

上面的链接还将为您提供示例代码!

/* Print out type, permissions, and number of links. */
printf("%10.10s", sperm (statbuf.st_mode));
printf("%4d", statbuf.st_nlink);
于 2013-08-30T11:27:17.423 回答
0

stat()功能将得到你所需要的:http: //linux.die.net/man/2/stat

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

于 2013-08-30T11:27:27.120 回答
0

这里

   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 );
于 2013-08-30T11:28:48.430 回答