如何查找系统上是否安装了less?

How to find if less is installed on the system?

我希望在不使用 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("which less")判断是否安装了less。这避免了在未安装时尝试调用 less。如果您根本不想使用 system,则必须在您的程序中重新实现 which 的功能:即,使用 getenv 来获取 PATH 变量并尝试将 /less 附加到每个路径并在生成的文件上调用 stat 以确定它是否存在并且是否可执行。