如何从 C++ 中的系统 PATH 获取绝对文件路径

How to get the absolute file path from the system PATH in C++?

本文关键字:获取 文件 路径 PATH 系统 C++      更新时间:2023-10-16

如果文件在系统 PATH 中,是否可以按文件的名称获取文件的完整路径?

例如,我的 PATH 中有cmake。我可以使用C++文件系统库获取它的完整路径吗?我只想跨平台检查文件是否存在。

Boost.Process 在 search_path 中具有此功能。下面是一个小的 linux 示例测试搜索路径,用于查找系统路径中sh可执行文件的位置。

#include <iostream>
#include <cstdlib>
#include <boost/process/search_path.hpp>
#include <string>
int main()
{ 
    auto myPath = boost::process::search_path("sh");
    std::cout << "sh executable path " << myPath << std::endl;
}

要测试的实时环境:https://wandbox.org/permlink/c3TbKq4sliBjxRVc

输出:

开始
sh 路径 "/bin/sh"

0 完成