一尘不染

如何从已经存在的文件复制权限?

linux

我必须用C编写一个程序(在类似Unix的系统上),这是我的问题:

我有一个文件(FILE1),我想创建另一个具有FILE1相同权限的文件(FILE2)。然后,我必须创建另一个文件(FILE3),该文件具有与FILE1相同的权限,但仅适用于所有者。

我将使用chmod()更改权限,但我不了解如何获取FILE1的权限。

你能帮我么?


阅读 329

收藏
2020-06-03

共1个答案

一尘不染

stat()fstat()功能检索struct stat,其包括部件st_mode指示文件模式,其中权限存储。

您可以将此值传递给chmod()fchmod()屏蔽掉非文件权限位:

struct stat st;

if (stat(file1, &st))
{
    perror("stat");
} 
else
{
    if (chmod(file2, st.st_mode & 07777))
    {
        perror("chmod");
    }
}
2020-06-03