gpt4 book ai didi

c - 使用 stat() 和 wordexp() 显示 C 中的可执行文件和隐藏文件

转载 作者:行者123 更新时间:2023-11-30 17:19:47 25 4
gpt4 key购买 nike

我对 Linux C 编程相当陌生,需要一些帮助来使用 stat 和 wordexp 函数显示可执行文件和隐藏文件。任何帮助表示赞赏。这是我到目前为止所拥有的:

int main(int argc, char **argv)
{

char fileName[60];

char *pos;

wordexp_t p;

char **w;

int i;

struct stat st;

fprintf(stdout,"Enter file name: ");
fgets(fileName,sizeof(fileName),stdin);

if((pos=rindex(fileName,'\n'))==(fileName+strlen(fileName)-1))
*pos='\0';

wordexp(fileName,&p,0);
w = p.we_wordv;

for(i = 0; i < p.we_wordc; i++)
{
printf("%s\n",w[i]);
wordfree(&p);
}

return 0;
}

最佳答案

在Linux上,隐藏文件以点开头,因此您需要检查文件名的第一个字符。可以通过检查文件模式来过滤可执行文件(您可以阅读更多相关信息 here - 查找此结构的 st_mode 字段)。
下面是简单的应用程序,其中列出了当前目录中的所有隐藏或可执行文件:

#include <dirent.h> 
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>

int main(void)
{
DIR *d;
struct dirent *dir;
struct stat buf;
d = opendir(".");
if (d)
{
while ((dir = readdir(d)) != NULL)
{
stat(dir->d_name, &buf);
if ((strlen(dir->d_name) > && dir->d_name[0] == '.') || (buf.st_mode & S_IXGRP || buf.st_mode & S_IXUSR || buf.st_mode & S_IXOTH)
printf("%s\n", dir->d_name);
}

closedir(d);
}

return(0);
}

您还应该记住两件事:

  • 目录通常具有可执行权限
  • linux中有两个特殊的目录:'.'和 '..'但我不知道你是否要过滤它。

关于c - 使用 stat() 和 wordexp() 显示 C 中的可执行文件和隐藏文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28787930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com