【问题标题】:How to find execute files in Linux?如何在 Linux 中查找执行文件?
【发布时间】:2014-12-21 01:34:06
【问题描述】:

我想在 Linux 的某个目录中获取执行文件的名称。 我该怎么做?

我尝试像这样使用 opendir:

dir = opendir(目录名);

我只需要获取执行文件的名称。 我用 C 编程。

谢谢:)

【问题讨论】:

  • 使用opendir和相关函数的例子有上千个,只要稍微搜索一下。
  • 我搜索了很多,但没有找到任何东西。你能帮帮我吗?
  • this old SO question 是我最喜欢的搜索引擎中的第一个热门。阅读该示例,阅读the manual pages,并尝试自己制作一些东西。 如果你有你自己的程序的问题,然后回到这里提出一个新问题,这表明你完整的尝试并详细描述您对该代码的问题。
  • 打开后使用readdir和stat获取文件访问权限,判断是否设置了执行位。
  • 您可能是指可执行文件。 “执行文件”英文不好!请编辑您的问题以改进它。

标签: c linux ubuntu directory system-calls


【解决方案1】:

您应该定义可执行文件的含义。

这可以是任何设置了执行位(它是所有者、组或其他)的文件。然后使用access(2) & X_OK 和/或使用stat(2) 进行测试。

也可能只有ELF 可执行文件。见elf(5);那么问题可能是检查文件是否确实可以执行,这可能很困难(缺少库依赖项怎么办?或格式错误的 ELF 文件?)。也许使用libelf(和/或libmagic 来执行相当于file(1) 命令)。

要递归扫描文件树,请使用nftw(3);只扫描一个目录使用opendir(3) & readdir(3)(不要忘记closedir!),那么你可能需要从每个目录条目构建完整的文件路径(可能使用snprintf(3)或@987654332 @)

另见Advanced Linux Programming

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多