使用stat来检查文件是否可以在C中执行
发布时间:2020-12-16 03:20:26 所属栏目:百科 来源:网络整理
导读:对于作业,我必须编写一个C程序,其中一件事情是检查一个文件是否存在,如果它是可执行的所有者. 使用(stat(path [j], sb) = 0我可以看到path [j]指示的文件是否存在. 我浏览了manpage,stackoverflow和几个网站的很多问题和答案,但是我无法围绕如何检查一个文件
对于作业,我必须编写一个C程序,其中一件事情是检查一个文件是否存在,如果它是可执行的所有者.
使用(stat(path [j],& sb)> = 0我可以看到path [j]指示的文件是否存在. 我浏览了manpage,stackoverflow和几个网站的很多问题和答案,但是我无法围绕如何检查一个文件是否可执行的stat. 我认为这可能是统计不符合我认为的方式.假设我使用stat,我该如何解决这个问题? 解决方法
你确实可以使用stat来做到这一点.您只需使用S_IXUSR(S_IEXEC是S_IXUSR的旧同义词)来检查您是否具有执行权限.按位AND运算符(&)检查是否设置了S_IXUSR的位.
if (stat(file,&sb) == 0 && sb.st_mode & S_IXUSR) /* executable */ else /* non-executable */ 例: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int main(int argc,char **argv) { if (argc > 1) { struct stat sb; printf("%s is%s executable.n",argv[1],stat(argv[1],&sb) == 0 && sb.st_mode & S_IXUSR ? "" : " not"); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |