Cygwin系统(“暂停”);和 system(“cls”);错误

Cygwin system("pause"); and system("cls"); error

提问人:Pavlo 提问时间:11/9/2023 最后编辑:genpfaultPavlo 更新时间:11/9/2023 访问量:118

问:

这是我的 C++ 代码:

#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
   cout << "Hello, world!" << endl;
   system("pause");
   system("cls");
   return 0;
}

我在cygwin中编译它,并出现此错误: sh: line 1: pause: command not found sh:第 1 行:cls:找不到命令。 我已经安装了 ncurses,但它仍然不起作用,有人可以帮忙吗?

C++ Windows Cygwin

评论

4赞 HolyBlackCat 11/9/2023
这些是仅限 Windows 的命令,Cygwin 假装它不是 Windows。要么不要使用 Cygwin,要么使用其他方式暂停和清除屏幕。
2赞 463035818_is_not_an_ai 11/9/2023
这不是编译错误。您的代码构建良好。
1赞 Jesper Juhl 11/9/2023
system()是一场安全噩梦,与生成的程序交互也是一种痛苦 - 永远不应该使用它system()
3赞 Jesper Juhl 11/9/2023
相反,使用将是一个比 更好的选择。ncursessystem()
1赞 HolyBlackCat 11/10/2023
你为什么首先使用Cygwin?它的存在是为了帮助将 Linux 程序(那些不是以跨平台方式编写的程序)移植到 Windows,但您并没有这样做。如果没有充分的理由,我不会用它来编写任何新代码。根据你更喜欢的编译器,在 MSYS2(GCC、Clang)和 Visual Studio(MSVC,也许还有 Clang)之间进行选择。

答:

1赞 gmonoae4 11/9/2023 #1

如果你真的想运行这个程序,你可以使用 or .但是,正如其他人已经指出的那样,它可能不完整或构成安全风险。system("cmd.exe /c pause")system("cmd.exe /c cls")

评论

0赞 Pavlo 11/10/2023
非常感谢,顺便说一句,你怎么知道这个命令?我在互联网上搜索,找不到任何有用的东西
0赞 gmonoae4 11/11/2023
@Pavlo 在 Cygwin shell 环境中,使用该函数时,可以执行 Windows 可执行文件。但是,并且是 cmd.exe 的内置命令,而不是独立的可执行文件,因此无法在 Cygwin shell 环境中执行。因此,若要运行这些命令,需要与命令一起传递或传递给函数。这种方法基于经验法则。system()pauseclscmd.exe/c pause/c clssystem()
0赞 gmonoae4 11/11/2023
如果您想直接使用,或者没有使用 Cygwin 的具体原因,建议考虑 MSYS2 或 Visual Studio,因为其他人已经评论过了。如果您不关心维护与 Linux 的跨平台兼容性,这是一个更好的选择。pausecls