在C ++中确定来自leafname和PATH环境变量的程序路径

时间:2016-04-08 17:55:56

标签: c++ qt boost path

今天我需要在我的C ++程序中实现一个易于从shell到whit的任务:

% which foo
/usr/local/bin/foo

以下是我的解决方案草图:

QString leafName("foo");

QString resolvedPath;
QString paths(qgetenv("PATH"));
QStringList components = paths.split(':');
QStringList::iterator iter, e_iter = components.end();
for (iter = components.begin(); iter != e_iter; ++iter)
{
   QString aPath(*iter);
   aPath += "/";
   aPath += leafName;

   QFileInfo fInfo(aPath);
   if (fInfo.exists())
   {
      resolvedPath = fInfo.canonicalFilePath();
      break;
   }
}
if (resolvedPath.isEmpty()) {
   resolvedPath = leafName;
}
// inform user of path we intend to execute from

我在Boost文件系统和Qt以及谷歌搜索中搜索了一个罐装版本之后才编写了这段代码。谷歌匹配我想要的所有想法我自己的运行程序的完整路径。

这似乎是一个合理的功能原子,因此自己编写它是愚蠢的。它存在吗?

0 个答案:

没有答案