如何以C语言退出控制台屏幕

时间:2018-12-27 17:12:27

标签: c

我正在尝试退出控制台屏幕,即关闭屏幕可以使用什么命令来实现。

void main()
{
    int n;
    printf("Please enter a number less than 5");
    scanf("%d", &n);
    if(n <= 5)
       printf("good");
     else
     {
        printf("You entered a number above so the program will exit");
        //here i need to call a function or use a command that will close
        // the console screen;
     }
}

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:4)

C11标准n1570不了解“控制台屏幕”(我想您是说terminal emulator正在运行程序)。请注意,C11并未提及“屏幕”或“键盘”(仅standard streams,而stdout常常不是<控制台>控制台”)和许多计算机(例如,大多数Internet服务器或超级计算机,甚至您的手机...)都没有。另外,您的程序可以使用redirectionspipeline运行(甚至在Windows上),然后没有控制台(因此,在这种常见情况下,您的问题没有任何意义)。 / p>

因此,通常,无法以标准方式完成您想要的操作(因为这没有任何意义)。

也许您的operating system提供了一些(特定于操作系统的)方式来实现这一目标。因此,请调查与您的系统相关的OS API(例如Windows上的WinAPIsyscalls(2)中列出的Linux系统调用)。

也许您想使用一些与终端相关的库,例如ncurses

如果终端遵循ANSI escape code约定,则可以遵循。

否则,请考虑使您的程序具有一些GUI。为此,您实际上需要一些widget toolkit(例如QtGTK等。)

您还可以考虑将inter-process communicationdesktop environment一起使用。如何执行此操作(或什至可能)与操作系统和台式机有关,并且可能与session管理有关。

顺便说一句,请记住stdout通常是缓冲的(也许是行缓冲的)。最好用printf结束\n控制字符串和/或调用fflush

答案 1 :(得分:3)

在开窗操作系统或执行环境中,控制台窗口将立即关闭进程终止,因此不清楚您在此处询问的内容,因为在您的示例中,无论输入了什么输入,程序都会终止。

如果您是从IDE运行代码,则IDE通常会创建一个控制台进程并在其中启动您的代码。在那种情况下,控制台不是您的应用程序“拥有” ,而是作为 child 进程执行的;在这种情况下,窗口将保持打开状态,直到IDE启动的父进程关闭。同样,如果您从命令外壳启动程序。即使有可能,尝试关闭其父进程也可能是不合理的行为。

可以在进程继续运行时“隐藏” 控制台窗口,这可能是您要的;特定于平台的实现方式,您尚未指定;对于Windows,这样的问题将是Win32 programming hiding console window的重复。但是,如果不是直接从其他控制台进程启动进程,则这些方法很可能无法使用。