我怎样才能实现像程序 which 这样的功能?

How can I implement functionality like the program which?

我想知道系统上是否安装了程序less。由于我的要求,我不允许使用直接 system("which less")。因此,我将尝试 PATH 变量中的 PATHs 并对文件执行 stat 以查看是否安装了 less。但是我如何将 less 添加到我的每个 PATH 中?我从这段代码开始

pathValue = getenv ("PATH");
if (! pathValue) {
    printf ("'%s' is not set.\n", "PATH");
}
else {
    printf ("'%s' is set to %s.\n", "PATH", pathValue);
}

现在它可以正确打印我的 PATH 但我不知道如何继续。你能帮助我吗?我想我必须标记我的 pathValue,我该怎么做?

$ ./a.out 'PATH' is set to /home/developer/google-cloud-sdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games.

我相信,getenv ("PATH"); returns 指向字符串的指针,例如

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

很明显,我们可以看到,不同的目录路径是:分隔的。所以,

  1. 您可以开始使用 strtok(): 作为分隔符来标记 pathValue。每个生成的标记都应充当检查文件的目录路径。
  2. 使用stat()检查是否存在。