Windows相当于Linux"屏幕"或其他替代方案?

13 linux windows gnu-screen

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

我希望它有点类似于Linux软件" screen".

我搜索的原因是我需要启动一个带有标识符的程序(在Windows上),所以我以后可以关闭该特定程序,而不关闭任何其他程序 - 即使实际程序(.exe文件)正在运行多次.那么无论如何我可以"命名"它吗?

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

$ screen <params> <id> ./softwareprogram
Run Code Online (Sandbox Code Playgroud)

然后我知道我总能找到它的ID :)

这是一个关闭或启动第三方程序的外部程序.

我的程序是用C++编写的,如果这有什么不同的话.

编辑:我不能以任何方式自己选择ID吗?喜欢以特定名称启动程序?另外我如何通过提供名称来杀死进程?

Cha*_*ald 5

目前,我认为屏幕上没有原生的等价物。Cygwin 包含 screen 的实现,但它带有 cygwin 的开销。问题在于 Windows 和基于 Posix 的操作系统以非常不同的方式实现控制台。Windows 不支持作为 POSIX 环境一部分的许多 tty 功能。也就是说,可以使用 API 调用在屏幕实用程序中编写功能的最小实现:AttachConsoleFreeConsole。但是,我必须对该主题进行更多研究。

  • 嘿——这是10年后的我。偶然发现了这个答案,所以我想指出我提到的两个 API 对于这个目标没有用处。 (3认同)

Chr*_*ian 1

当您启动程序时,即使在 Windows 上,您也可以获得其进程 ID。您稍后可以使用该进程 ID 再次终止该程序。

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

当然,您也可以使用数据库或包含文件的文件夹来代替注册表,其中密钥(您的标识符)是文件名,而 pid 位于每个文件内