所以我有一个问题,我有一个应用程序开始。然后通过测试我需要关闭它并再次启动它。但它需要在没有硬编码的情况下完成。
那么有没有办法找到进程的运行位置?我可以找到所有正在运行的进程的列表,但不知道这是否可行。
编辑:它在Windows 7操作系统上。
答案 0 :(得分:1)
QueryFullProcessImageName()将为进程提供可执行映像的路径:
#include <windows.h>
#include <iostream>
int main()
{
char exe_path[MAX_PATH];
DWORD exe_path_size = MAX_PATH;
if (QueryFullProcessImageName(GetCurrentProcess(),
0,
exe_path,
&exe_path_size))
{
std::cout << exe_path << "\n";
}
return 0;
}
答案 1 :(得分:1)
简单易用的方式是使用argv [0]。 它返回完整的.exe文件路径,这就是你需要的一切
答案 2 :(得分:0)
首先,您是什么意思“找到进程的运行位置”?我假设你的意思是父母的进程ID,但它可能意味着当前的工作目录,远程调用的IP等...
要查找父级的流程ID,请查看getppid()。
编辑:这假设你(像任何理智的程序员一样)使用类似unix的机器。
编辑#2:你在Windows上,所以我不知道。
编辑#3:由于您正在寻找正在执行的程序的路径,因此请使用argv [0]。第一个命令行arg to int main(int argc,char * argv [])始终是二进制文件的路径。