2016-10-10 30 views
-2

使用C++ Boost我正在创建一个命令行应用程序。 由于某些原因,我需要启动我的可执行文件的命令提示符的PID。 可执行文件与C++一起用boost编译并内置在Eclipse IDE中获取从C++启动提示的进程ID可执行文件

+1

问题是,代码如何获得正在执行的进程的PID?或者是关于其他程序获取它启动的进程的PID?或者是关于其他程序获取独立启动的程序Xyz实例的PID?请在这里更清楚一点。 –

+1

“提示”不是一个进程,因此它没有PID。你想要识别什么*流程? –

+0

我打开命令提示符,然后通过转到该路径执行exe文件。所以在这种情况下,它不是一个提示符,而是在打开的cmd上运行的cmd.exe进程,并显示在taskmanager中@HarryJohnston –

回答

1

没有办法让您的应用程序知道创建它的进程的PID。

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

如果你正在寻找的父进程的PID,唯一的解决方法是让父进程将它传递给子进程的说法:

  • 从命令行应用程序,check this post和提取您的PID (CMD.EXE的PID)
  • 它传递给你的程序:> myprogram.exe%PID%
  • 从你的程序的主要功能,得到父母的PID顺利通过使用argv[1]

或者,你可以试试这个:当你的程序运行,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" 

注意,如果许多项目都开始了,你就无法知道谁是谁。但是,如果只有一个有效,这应该可以做到。

+0

我不希望用户在每次启动程序时都传递PID。有没有什么办法可以随时产生一个唯一的数字,而不仅仅是依靠概率?即使这可以解决我的问题。 –

+0

@Milind:对不起,但这绝对是唯一的解决方案 – jpo38

+0

@Milind:检查我的编辑,可能这会适用于你 – jpo38

相关问题