在Windows上,您可以转到“运行”,键入“cmd”,然后按回车,然后轻松启动“C:\ Windows \ system32 \ cmd.exe”。 “python”或“pythonw”也是如此(尽管第二个例子中没有弹出)。如果您只知道要执行“python”或“pythonw”并且它位于PATH中,那么C中最简单的方法是找出可执行文件的全限定路径名称? This question似乎与该问题高度相关,但并未给出C中的最终解决方案。_execp允许使用字符串“python”或“pythonw”,但需要该函数的argv参数的第一个参数的限定路径。如何找到文件的全限定路径名称?
1
A
回答
3
查看shell API PathResolve(但是,在未来的Windows版本中标记为“可移除的”,所以我会避免它)和PathFindOnPath,而是一个稳定的API。使用PathFindOnPath,传递文件名作为第一个参数搜索(例如yourexecutable.exe),并将NULL作为第二个参数。
4
使用getenv()获取路径,将其拆分为字符串(在Windows上以分号分隔),然后依次测试每个目录中是否有指定名称的可执行文件。
#include <iostream>
#include <sstream>
#include <sys/stat.h>
int main(void)
{
std::stringstream path(getenv("PATH"));
while (! path.eof())
{
std::string test;
struct stat info;
getline(path, test, ':');
test.append("/myfile");
if (stat(test.c_str(), &info) == 0)
{
std::cout << "Found " << test << std::endl;
}
}
}
将myfile替换为任何内容,然后在Windows中将':'替换为';'因为路径分隔符是不同的。
1
您可以使用PathFindOnPath(),并为第二个值传递NULL以搜索当前的PATH环境变量。
相关问题
- 1. 如何从namespace.class名称找到文件路径?
- 2. Eclipse,JDT:在类路径中找到一个文件,知道它的完全限定名称
- 3. 从完全限定的路径创建WebControls(程序集名称?)
- 4. Python文件路径名称
- 5. 如何在VBScript中获取文件的完全限定路径?
- 6. 如何读取.class文件的全限定名称
- 7. 软件包名称路径 - 完全合格后路径太长
- 8. 得到给定一个路径和文件名路径名
- 9. 如何查找原名称已知的重命名文件的新路径?
- 10. 如何从文件路径获取父文件夹的名称?
- 11. 如何指定文件路径但不是名称InDesign applescript
- 12. 如何从给定路径获取子文件夹名称Server.MapPath
- 13. 如何找到文件路径
- 14. PowerShell - 如何捕获文件路径名称,包括使用此代码的长文件路径名称+ AlphaFS
- 15. 如何查找符号的完全限定名称空间?
- 16. 来自InputStream的文件路径/名称
- 17. 在给定路径找不到文件
- 18. 找到给定输入的唯一路径名称
- 19. 如何仅从路径中提取文件/文件夹名称?
- 20. 如何获取文件路径从变量名找到
- 21. C#:OpenFileDialog查找文件名的路径和超限值
- 22. 得到的文件名没有扩展名全路径
- 23. 如何在路径的给定部分下找到文件夹?
- 24. 如何找到多个文件夹的特定文件的文件路径
- 25. VB.NET/C#查找已安装的软件名称和应用程序路径后如何找到exe名称
- 26. 查找并替换路径中的文件夹名称
- 27. 得到全路径名
- 28. linux的全路径文件名released路径
- 29. MonoTouch - xib.designer.cs文件丢失UIKit对象的全限定路径
- 30. 从路径获取文件夹名称
...“可执行”的定义由'echo%PATHEXT%'给出。 – RichieHindle 2009-11-22 22:47:17