C语言代码实现
// 获取文件的类型与权限
static void get_file_mode(unsigned int mode_num, char *mode_str)
{
if (S_ISREG(mode_num))
{
mode_str[0] = '-';
}
else if (S_ISDIR(mode_num))
{
mode_str[0] = 'd';
}
else if (S_ISLNK(mode_num))
{
mode_str[0] = 'l';
}
else if (S_ISFIFO(mode_num))
{
mode_str[0] = 'p';
}
else if (S_ISCHR(mode_num))
{
mode_str[0] = 'c';
}
else if (S_ISBLK(mode_num))
{
mode_str[0] = 'b';
}
else
{
mode_str[0] = 's';
}
mode_str[1] = (mode_num & S_IRUSR) ? 'r' : '-';
mode_str[2] = (mode_num & S_IWUSR) ? 'w' : '-';
mode_str[3] = (mode_num & S_IXUSR) ? 'x' : '-';
mode_str[4] = (mode_num & S_IRGRP) ? 'r' : '-';
mode_str[5] = (mode_num & S_IWGRP) ? 'w' : '-';
mode_str[6] = (mode_num & S_IXGRP) ? 'x' : '-';
mode_str[7] = (mode_num & S_IROTH) ? 'r' : '-';
mode_str[8] = (mode_num & S_IWOTH) ? 'w' : '-';
mode_str[9] = (mode_num & S_IXOTH) ? 'x' : '-';
mode_str[10] = '\0';
}