从C ++ Executable获取已启动提示的进程ID

时间:2016-10-10 12:39:08

标签: c++ windows boost

使用C ++ Boost我正在创建一个命令行应用程序。 出于某种原因,我需要启动可执行文件的命令提示符的PID。 可执行文件是用C ++编写的,还有boost和内置的eclipse IDE

1 个答案:

答案 0 :(得分:1)

您的应用程序无法知道创建它的进程的PID。

如果您正在寻找当前流程的PID,请查看ms c++ get pid of current process(因为您显然在Windows上运行)。

如果您正在寻找父进程的PID,唯一的解决方案是让父进程将其作为参数传递给子进程:

  • 从命令行应用程序,check this post并解压缩您的PID(cmd.exe的PID)
  • 将其传递给您的计划:> myprogram.exe%PID%
  • 从程序的main函数中,使用argv[1]获取父级的PID。

或者,您可以尝试这样做:当您的程序运行时,cmd.exe窗口标题会被更改,并让程序名称显示在其中(命令正在运行)。因此,如果在代码中执行与tasklist /v /fo csv | findstr /i "myprogram"等效的操作,输出将显示正在运行的cmd.exe进程的PID。

>tasklist /v /fo csv | findstr /i "myprogram"
"cmd.exe","44372","Console","1","4 900 Ko","Running","DOMAIN\USER","0:00:00","cmd.exe - myprogram"

请注意,如果启动了许多程序,您将无法知道谁是谁。但如果只有一个有效,那就应该做到这一点。