【问题标题】:How to find if less is installed on the system?如何查找系统上是否安装了less?
【发布时间】:2015-05-19 04:57:39
【问题描述】:

我希望在不使用system的情况下进行以下行为

int ret = system("less -V > /dev/null 2>&1");
if (ret == 0) {
    printf("The less executable was found.\n");
}

如果系统上安装了 less,我需要变量 ret 为 0,但不使用对 system 的调用。可以用exec 或类似的方式完成吗?

【问题讨论】:

  • 但不使用对system的调用。这是一个奇怪的要求。
  • 是的,很奇怪。您将需要 fork() 并且可能想要使用 execlp() 并且这只适用于 Linux 而不是基于 BSD 的 Unix(如此处所述(man7.org/linux/man-pages/man3/exec.3.html

标签: c system


【解决方案1】:

您可以使用system("which less") 来确定是否安装了less。这样可以避免在未安装时尝试调用 less。如果您根本不想使用system,则必须在程序中重新实现which 的功能:即,使用getenv 获取PATH 变量并尝试附加@987654328 @ 到每个路径并在结果文件上调用 stat 以确定它是否存在并且是否可执行。

【讨论】:

  • 能否请您详细说明,因为我以前从未使用过stat
  • @Niklasinstockholm 这是一个系统调用,不是 C 标准的一部分,而是标准化为 POSIX 的一部分。它为您提供与文件关联的元数据。
猜你喜欢
  • 1970-01-01
  • 2014-05-06
  • 2020-10-27
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多