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

时间:2011-02-19 15:11:17

标签: windows linux gnu-screen

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

我希望它有点类似于Linux软件“screen”。

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

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

$ screen <params> <id> ./softwareprogram

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

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

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

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

3 个答案:

答案 0 :(得分:3)

目前,我不相信屏幕有本机等价物。 Cygwin包含一个屏幕实现,但它带有cygwin的开销。问题是基于Windows和Posix的操作系统以非常不同的方式实现控制台。 Windows不支持许多属于POSIX环境的tty功能。话虽这么说,可以使用API​​调用在屏幕实用程序中编写功能的最小实现:AttachConsoleFreeConsole。不过,我不得不对这个问题进行更多的研究。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:-1)

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

您也获得了进程ID,但只有在该进程有打开的句柄时它才有效。

lpProcessInformation参数将包含process-id和process-handle。