查找进程的运行位置

时间:2012-04-26 15:19:05

标签: c++ process

所以我有一个问题,我有一个应用程序开始。然后通过测试我需要关闭它并再次启动它。但它需要在没有硬编码的情况下完成。

那么有没有办法找到进程的运行位置?我可以找到所有正在运行的进程的列表,但不知道这是否可行。

编辑:它在Windows 7操作系统上。

3 个答案:

答案 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 [])始终是二进制文件的路径。