列出指定目录下所有可被其他用户执行的文件
来源:互联网 发布:单目标粒子群算法代码 编辑:程序博客网 时间:2024/06/05 02:51
知识点:
stat中的st_mode中包含了文件的访问权限位,共有9个:
S_IRUSR: 用户读
S_IWUSR: 用户写
S_IXUSR: 用户执行
S_IRGRP: 组成员读
S_IWGRP: 组成员写
S_IXGRP: 组成员执行
S_IROTH: 其他用户读
S_IWOTH: 其他用户写
S_IXOTH: 其他用户执行
使用st_mode & S_IXOTH 可以获得文件的其他用户是否可执行的权限位,如果该位为1,则该文件可以被其他用户执行,否则不能被执行。
代码:
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<errno.h>
#include<dirent.h>
#include<sys/types.h>
#define SIZE 1024
int dir_run(char *path)
{
DIR *dir;
dir = opendir(path);
if (dir == NULL)
{
return -1;
}
struct stat st;
struct dirent *entry;
char fullpath[SIZE];
while((entry = readdir(dir)) != NULL)
{
if((strcmp(entry->d_name, ".") == 0) || (strcmp(entry->d_name, "..") == 0))
{
continue;
}
sprintf(fullpath, "%s/%s", path, entry->d_name);
if(lstat(fullpath, &st) != 0)
{
continue;
}
if(st.st_mode&S_IXOTH)
{
printf("%s\n",entry->d_name);
}
if(S_ISDIR(st.st_mode))
{
printf("%s目录下可被其他用户执行的文件:\n",entry->d_name);
dir_run(fullpath);
printf("\n");
}
}
closedir(dir);
return 0;
}
int main(int argc,char*argv[])
{
if(argc!=2)
{
printf("参数不正确!正确格式:./main filepath\n");
exit(1);
}
dir_run(argv[1]);
return 0 ;
}
- 列出指定目录下所有可被其他用户执行的文件
- 列出指定目录下的所有文件的绝对路径
- 递归列出指定目录下的所有文件的绝对路径
- 列出指定目录下的所有文件的路径
- [Linux C]列出指定目录下的所有文件(夹)
- javaFile循环列出指定目录下的所有文件(源代码)
- 递归列出指定目录下所有的符号链接文件
- 递归列出指定目录下所有的普通文件
- 列出指定目录下后缀是.mp3的所有文件
- 列出指定目录下所有文件的最后被修改时间
- Shell循环列出目录下所有文件或查找目录下包含指定字符串的文件
- 用C#列出指定目录下的所有指定扩展名(多个扩展名)的文件
- PYTHON 列出指定目录下的文件
- 列出指定目录下的文件
- java列出指定目录下的文件
- 列出某个目录下的所有文件
- 列出目录下的所有文件
- 递归列出目录下的所有文件
- Qt 进程间通讯学习(windows消息WM_COPYDATA)
- MIT 6.828的lab1
- QT 图片旋转--QTransform 沿中间旋转
- php实现微信中的图片合并
- .NET XML增删查改
- 列出指定目录下所有可被其他用户执行的文件
- nginx的log使用
- Qt之鼠标样式
- 通过DOS命令批量重命名文件
- Qt 的线程与事件循环
- 黑马程序员_【总结】_多线程知识梳理2(end)
- STL系列之vector(1)
- WPF学习
- 列出指定目录下属于给定用户的所有文件