Windows相当于Linux“屏幕”还是另一种select?

我正在寻找一种方法来控制Windows环境中的程序。

我宁愿它有点类似于Linux软件的“ screen ”。

我search的原因是我需要用一个标识符启动一个程序(在Windows上),所以我以后将能够closures该特定程序,而不closures其他任何东西 – 即使实际的程序(.exe文件)正在运行多次。 那么反正我能“命名”呢?

我现在在Linux上使用以下内容:

 $ screen <params> <id> ./softwareprogram 

然后我知道我总是可以find它的ID 🙂

这是一个closures或启动第三方程序的外部程序。

我的程序是用C ++编写的,如果有什么区别的话。

编辑:我不能以任何方式不select我自己的ID? 像启动具有特定名称的程序一样? 另外我怎么通过提供一个名字来杀死进程呢?

Solutions Collecting From Web of "Windows相当于Linux“屏幕”还是另一种select?"

当你启动程序时,你甚至可以在窗口上获得进程ID。 您稍后可以使用该进程ID再次终止该程序。

如果你需要给它自己的ID,那么你可以使用例如注册表来存储你的ID到进程ID的映射。 如果您收到启动命令,请将标识符作为键存储在注册表中,并将启动的进程的PID作为值存储。 如果您收到停止命令,请从注册表中检索pid并杀死该pid并从注册表中删除该密钥。

而不是注册表你当然也可以使用一个数据库或一个文件夹的文件,其中的关键字(你的标识符)是文件名,PID是在每个文件

目前,我不相信有一个本地的屏幕等值。 Cygwin包含一个屏幕的实现,但它带有cygwin的开销。 问题是基于Windows和Posix的操作系统以一种完全不同的方式来实现控制台。 Windows不支持许多属于POSIX环境的tty功能。 话虽如此,也许可以使用API​​调用在屏幕实用程序中编写一个最小的功能实现: AttachConsole和FreeConsole 。 但是,我不得不对这个主题做更多的研究。

虽然我不知道linux screen命令是干什么的,但是为什么不使用从CreateProcess获得的进程句柄呢?

您也可以获得进程ID,但是只要该进程打开句柄,它就是唯一有效的。

lpProcessInformation参数将包含进程ID和进程句柄。