我想在C ++中创建一个控制台应用程序,然后在显示信息时,关闭控制台并在后台运行。这可能吗?另一种方法是这样做吗? Python也许?
答案 0 :(得分:0)
是的,这可以通过一个小变体来实现:
fork()
)答案 1 :(得分:0)
您必须在进程仍在运行时关闭控制台窗口,这是系统相关的,或者启动另一个进程,即使标准库提供system
函数来执行此操作,其参数仍然是系统相关的命令行。
结果是:这是系统依赖的。
在Windows中,完全版本的Microsoft Visual Studio IDE在我记忆中总是使用一种特殊的方法,有两个可执行文件devenv.com
和devenv.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,因此您可能希望附加到该控制台。