c - 与 Windows 相比,为什么 Screen 在 Linux 中没有消失?

标签 c linux windows terminal getch

<分区>

我是 C 编程的初学者。当我使用任何编译器在 Windows 中编程时,我使用 getch() 来保持屏幕。

没有它,当我运行程序时,屏幕突然消失了。但是当我在 Linux 中做同样的事情时,就不需要 getch() 了。当我运行我的程序时,它会运行并且屏幕不会消失。

为什么 Linux 中的屏幕(终端)不像 Windows 中那样关闭?

最佳答案

控制台窗口将被首先打开的任何内容关闭。

在 Windows 和 Linux 中,您都可以启动终端仿真器窗口并指定将在该窗口中运行的程序。当该程序终止时,窗口将关闭(除非您指定一些选项使其保持打开状态)。

Windows 软件开发通常是通过 IDE(例如 Visual Studio)完成的。从 Windows 启动程序的常用方法是打开一个终端窗口,该窗口只执行您的程序。程序结束时窗口关闭——因此需要 getch() 或类似的东西。 (请注意,getch() 函数特定于 MS Windows。)

在 Unix/Linux 系统上,您通常从桌面管理器启动终端窗口,窗口中运行的程序是一个交互式 shell。如果您从 shell 运行命令,程序完成后窗口将保持打开状态;它保持打开状态直到 shell 终止(当您在 shell 提示符下键入 exitCtrl-D 时。

这两种方法都可以在任一系统上使用。在 Windows 上,您可以启动一个运行 cmd.exe 的控制台窗口,它会给您一个 C:\ 提示符;然后您可以从该提示符运行命令,该窗口将在命令终止后保持打开状态。相反,在 Unix 或 Linux 上,您可以启动一个只运行一个命令的窗口,例如 xterm -e ./my_program &,程序完成后窗口将关闭。

不同之处在于 Windows 和 Windows 开发环境更加强调 GUI(图形)程序。对控制台程序(将输出写入 stdout 的程序)的支持几乎是事后才想到的(尽管对此类程序的支持要早得多)。但是控制台程序往往更容易编写,初学者也更有可能开发它们。

另一方面,类 UNIX 系统仍然更加重视写入标准输出的程序(尽管也有很多 GUI 程序)。

关于c - 与 Windows 相比,为什么 Screen 在 Linux 中没有消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885436/

相关文章:

c - MPI 核心数

c - 有没有一种可移植的方法来管理存储在 Linux 中映射文件中的结构数据,而无需逐字节读取原始数据?

windows - 将部分 DOS/Windows 批处理转换为 linux shell

C++在WM6.1上锁定tabskbar但也锁定windows键

c++ - Windows 与 Linux 内存分配/std::list 构造函数性能

C编程: writing directory file names into an array,出现奇怪符号

c - 双指针是什么意思和指针日期类型大小的malloc

c - 5 年后 - NXP ADC 无法正常工作

在 Linux 中创建守护进程

linux - 如何防止编译器和链接器接管整个机器?