运行控制台应用程序,然后关闭控制台并在C ++的后台运行

时间:2016-09-04 10:46:26

标签: c++ background console

我想在C ++中创建一个控制台应用程序,然后在显示信息时,关闭控制台并在后台运行。这可能吗?另一种方法是这样做吗? Python也许?

4 个答案:

答案 0 :(得分:0)

是的,这可以通过一个小变体来实现:

答案 1 :(得分:0)

您必须在进程仍在运行时关闭控制台窗口,这是系统相关的,或者启动另一个进程,即使标准库提供system函数来执行此操作,其参数仍然是系统相关的命令行。

结果是:这是系统依赖的。

在Windows中,完全版本的Microsoft Visual Studio IDE在我记忆中总是使用一种特殊的方法,有两个可执行文件devenv.comdevenv.exe。前者是一个控制台子系统可执行文件,默认情况下运行后者,这是一个GUI子系统可执行文件:

[C:\]
> where devenv
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.com
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe

[C:\]
> _

这里的基本思想是,由于历史原因,命令解释器搜索可执行文件首先找到.com文件,因此命令devenv只是用于启动IDE或只是获取帮助通过/?选项发送文字。

答案 2 :(得分:0)

在Windows上使用ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false)隐藏控制台窗口。它仍将在后台运行,并且在任务栏上不可见。

但是,您必须运行Taskmgr.exe之类的任务管理器才能找到它并将其关闭。

#include <windows.h>  
#include <iostream>     
using namespace std;


int main () {   
    cout<<"Some  information is displayed.. \n\n";
    Sleep(5000);

    cout<<"wait.. the console is going to hide and run in background.. \n";
    Sleep(5000);

    ShowWindow(FindWindowA("ConsoleWindowClass", NULL), false);

    while(true) {
                 // Do your hidden stuff in here
    }   
return 0;
}

答案 3 :(得分:0)

这里给出的其他答案过于复杂。在Windows中关闭控制台窗口的最简单方法是从中轻松分离。一旦控制台窗口的最后一个用户数据化,控制台窗口就会关闭。

如果从CLI启动程序(例如cmd.exe),则此CLI也会附加到控制台,因此控制台窗口不会关闭。

无论如何,从控制台分离就像调用

一样简单
FreeConsole();

......完成!

此外,您可以使用AttachConsole随时附加到新创建的控制台,该D0000000000000000000 EEASTDE ELASPDF ELASQML EEASTDE ELASPDF ELASQHG F00000006 会获取进程ID。现在在CLI情况下,父级通常是CLI shell,因此您可能希望附加到该控制台。