一旦程序完成并在 1 次击键后关闭,是不是有办法让控制台窗口保持打开状态?
Posted
技术标签:
【中文标题】一旦程序完成并在 1 次击键后关闭,是不是有办法让控制台窗口保持打开状态?【英文标题】:Is there anyway to get the console window to stay open once program is done and close after 1 keystroke?一旦程序完成并在 1 次击键后关闭,是否有办法让控制台窗口保持打开状态? 【发布时间】:2012-08-24 21:37:29 【问题描述】:命令行程序总是在执行完毕后关闭窗口。我知道您可以使用cin.get();
等待用户输入。有没有一种方法可以让用户按任意键(而不是输入某些内容然后按 Enter)来关闭程序?我不想使用 system("PAUSE")
,因为它是特定于 Windows 的并且速度很慢。
我希望它暂停,以便用户可以看到它已成功完成以及其他详细信息。它可能不会从已经打开的命令行运行,并且可执行文件将被双击运行。
【问题讨论】:
命令行程序没有要关闭的窗口。它应该简单地输出到与输入命令行的窗口相同的窗口。 @pst:当您希望窗口永久存在时,在临时窗口中调用程序是不正确的调用。无法在可移植程序中修复它,因为可移植程序甚至无法判断它是否在窗口中。 (在所有情况下暂停都会破坏程序的使用,例如管道或重定向到文件。这是一个非常糟糕的选择。) 你为什么抱怨没有PAUSE
,你的程序是即时的,而使用PAUSE
,它太“慢”了。这只是令人困惑。
@Celeritas - 坦率地说,似乎有很多不相关的辩论。两个建议: 1)如果你想让你的程序“暂停”,一个好的、可移植的方法是“std::cin.get()”。这就是我试图首先提出的建议。 2) 如果你想让Windows 暂停你的程序,你可以用“start /wait”来调用它。 '希望有帮助
@Celeritas:正确的解决方案是教育用户如何运行命令行程序或提供 GUI 程序而不是 Windows 上的命令行程序。不幸的是,这些都不是很方便。
【参考方案1】:
是的。 "system("PAUSE") 是一种方式。一个简单的 "getchar()" 或 "cin" 应该是绝对等价的 :)
【讨论】:
不,system("PAUSE")
是不是一种方式。这是一个 C++ 问题。你不知道“PAUSE”在任意 C++ 机器上会做什么。
@David Schwartz - 看老兄,你关于“没有要关闭的窗口”的粗鲁评论完全不合时宜。我们都知道 OP 的意思是“出现了一个 windows 命令提示符,我想保持它直到用户关闭它”。 “System("PAUSE")
”是在 Windows 上完成此任务的一种方式(尽管是一种糟糕的方式)。 “std::cin.get()”是可取的。这就是我的建议。
正如大卫所说,不要使用system("PAUSE");
使用getchar
或cin
虽然 OP 不在 Windows 上。 OP 明确表示他不想使用system("PAUSE")
,因为它是特定于 Windows 的。如果 OP 只在 Windows 上,那有什么关系呢?【参考方案2】:
这是操作系统的一个选项,而不是 C/C++ 中的选项。它需要控制终端如何打开和关闭。 就像调用批处理或命令行应用程序一样。
在此处发布代码或配置过于依赖平台(基本上是在我们的 IDE 中带有 onClose 语句的控制台 GUI 应用程序)
【讨论】:
以上是关于一旦程序完成并在 1 次击键后关闭,是不是有办法让控制台窗口保持打开状态?的主要内容,如果未能解决你的问题,请参考以下文章
Python CPU 使用率降至 0%,在脚本执行期间击键后恢复