[英]How to find an exe in $PATH using Boost
我正在使用Boost库编写C ++程序。 我需要能够找到可执行文件的完整路径,只给出名称。 这相当于Unix shell的which
实用程序,Windows where
,或Python的shutil.which
。
有办法做到这一点吗? 我当然可以编写自己的,通过遍历PATH环境变量,但为了便于携带,我需要考虑拆分的事情:
或;
等,如果有一个预先编写(和测试!)例程,我宁愿使用它。
“写我自己的”是通常如何做到的。 虽然这可能是C中的一个熊,但是使用C ++及其丰富的std::string
类,这变得毫无疑问。 甚至不需要Boost。 这将是介绍性C ++课程中典型的家庭作业:
std::string s=getenv("PATH");
const char sep=':'; // Or use ';', if you feel like it.
auto b=s.begin(), e=s.end();
while (b != e)
{
if (*b == sep)
{
++b;
continue;
}
auto p=b;
b=std::find(b, e, sep);
auto check=std::string(p, b) + "/" + filename;
if (access(filename.c_str(), X_OK) == 0)
{
// Found it. Insert code here.
}
}
这是一个非问题,它可能会更快,只是敲出来,然后尝试找到一些库函数,在某处,做同样的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.