从c++可执行文件中获取启动提示符的进程Id
Get Process Id of launched Prompt from C++ Executable
使用c++ Boost创建命令行应用程序。由于某些原因,我需要启动可执行文件的命令提示符的PID。可执行文件是用c++和boost一起编写的,内置在eclipse IDE
你的应用程序不可能知道创建它的进程的PID。
如果您正在查找当前进程的PID,请查看msc++获取当前进程的PID(因为您显然在Windows上运行)。
如果您正在寻找父进程的PID,唯一的解决方案是让父进程将其作为参数传递给子进程:
- 从命令行应用程序,检查这篇文章,提取你的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","DOMAINUSER","0:00:00","cmd.exe - myprogram"
请注意,如果启动了许多程序,您将无法知道谁是谁。但如果只有一个工作,这应该可以解决问题。
相关文章:
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- 异常属于C++中的线程还是进程
- WMI检测进程创建事件-c++
- c++多进程编写一个唯一的文件
- 如何在C++中将函数发送到另一个进程
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 如何使 windows 命令提示符在C++可执行文件上显示返回值?
- 终止 QProcess 不会终止子进程
- 将返回值从 exe 传递到 bat,并将其传递给 C# 中的进程
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- Windows 进程间同步类似事件?
- 在挂钩启动新线程时解除挂钩进程
- pclose() 不会给我进程退出代码
- 运行代码时,c++ 会终止进程
- 可以读入进程内存的最大块大小是多少?
- 在C++中启动进程时隐藏命令提示符
- 从c++可执行文件中获取启动提示符的进程Id