C++, Linux, 系统(“读取...”) 导致错误

C++, Linux, system("read ...") causes error

提问人:oel5w40 提问时间:11/1/2023 更新时间:11/1/2023 访问量:63

问:

我有一个问题并解决了它,但有一个问题应该解决。 我在工作中使用 Windows,在家使用 Linux。我想适应

system("pause"); 

从 Windows 到 Linux。 所以我试过了system("read -n1 -r -p \"press any key\"");

但是包括“read”在内的每个组合都会导致在执行程序时出现错误 h: 1: read: Illegal option -n 现在我使用

printf("press enter\”):
getchar();

但我想知道为什么system(“read ...”)会导致此错误。如果我输入 read -n1 -r p “按任意键”,它可以毫无问题地工作。 有什么秘密吗?为什么很难找到等效的代码system("pause");

在 Linux 中。 任何帮助都是值得赞赏的。

安德烈亚斯

我尝试了system(“read -ns1”);但错误并没有消失。我在 stackoverflow.com 中搜索并得到了解决方案,但我想知道为什么“读取”与“系统”相结合会导致我不明白的错误。

C++ Linux 系统

评论

3赞 Jesper Juhl 11/1/2023
永远不要使用。这是一场安全噩梦,有更好的方法可以实现您正在尝试做的事情。system()
0赞 Barmar 11/1/2023
该选项是扩展名。 uses ,它没有该选项。-nbashsystem()sh
0赞 user4581301 11/1/2023
这种方法比仅仅为了浪费时间而启动另一个进程要好得多。显然,性能在这里不是问题,你在电脑上能做的任何事情都比等待人类按下按钮要快,但这种奢侈仍然让我感到恼火。getcharsystem
0赞 463035818_is_not_an_ai 11/1/2023
“为什么很难找到 system(”pause“)的等效代码;”,因为它的本质取决于操作系统system

答:

0赞 Diego Torres Milano 11/1/2023 #1

因为是内置的 shell 而不是命令read

type read
read is a shell builtin

你能做的最好的事情就是避免和阅读C++,使用任何可用的选项,但是,如果你真的,真的想走那条路system

system("bash -c \"read -n1 -r -p 'press any key'\");