所以我有一个问题,我有一个可以启动的应用程序。然后通过测试,我需要将其关闭并重新启动。但它需要在没有硬编码的情况下完成。
那么有没有办法找到一个进程是从哪里运行的呢?我可以找到所有正在运行的进程的列表,但不知道这是否可能。
编辑:它在 Windows 7 操作系统上。
简单便携的方法是使用 argv[0]。它返回完整的 .exe 文件路径,这就是您所需要的
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;
}
首先,“查找进程的运行位置”是什么意思?我假设您的意思是父进程 id,但它可能意味着当前工作目录、远程调用的 ip 等...
要查找父进程 ID,请查看getppid()。
编辑:这假设您(像任何理智的程序员一样)正在使用类似 unix 的机器。
编辑#2:你在 Windows 上,所以我不知道。
编辑#3:由于您正在寻找您正在执行的程序的路径,请使用 argv[0]。第一个命令行 arg 到 int main(int argc, char* argv[]) 始终是二进制文件的路径。