如何使用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();
中使用权限答案 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 );