【问题标题】:DOS "pause" in Linux? [duplicate]Linux中的DOS“暂停”? [复制]
【发布时间】:2013-10-29 12:04:51
【问题描述】:

首先,我对编程很陌生。两周前我刚刚开始了我的第一堂编程课,如果我听起来很陌生,我深表歉意。

我的教授希望我在我的程序中实现“按任意键继续...”。基本上,当我运行一个程序时,他希望出现一行 [like printf("jfdskaljlfja");] 那么在下一行运行之前会出现“按任意键继续”。他告诉我们 DOS 等价物是 system("pause"),但他希望我们在 linux 上做。这是我的代码的样子:

    #include <stdio.h>
    int main()
    { 
         printf("This is the first line of this program);
         system("pause");
         printf("This is the second line);
    }

除非他希望我们在 Linux 中执行此操作,否则 system("pause") 在这种情况下将不起作用。有没有办法让它完全像 pause 一样,但在 linux 术语中?

再次,对不起,如果我听起来很新奇。非常感谢!

此外,他并不真正关心代码是否高效或其他什么,只要它运行即可。同样,我对编程真的很陌生,所以最简单的答案将不胜感激:)

【问题讨论】:

  • 欢迎来到 Stack Overflow。请尽快阅读About 页面。此外,始终提交可编译的代码。很明显,您显示的代码从未编译过;至少有两个右引号丢失,两个换行符\n 转义序列丢失。
  • 另外,发布您已经尝试过的内容。给你答案不会帮助你学习
  • 这是我的教授给我的代码(不幸的是),他刚刚发了一封电子邮件说要添加这些。谢谢!
  • 我现在很困惑。他基本上告诉我们研究命令,而我什么都没想出来。我已经阅读了有关读取命令和函数的内容,但我们还没有涉及到。
  • 这个问题在这里得到了解决,还有很多其他值得学习的东西:faqs.org/faqs/unix-faq/programmer/faq

标签: c linux ubuntu


【解决方案1】:

你可以在 linux 上做同样的事情

system("stty -icanon -echo; dd if=/dev/tty of=/dev/null bs=1 count=1 2>/dev/null; stty icanon echo");

或者您可以将该字符串放入名为pause 的shell 脚本中并继续运行system("pause");

【讨论】:

  • 您使用的输入文件是“dev/tty”。我在我的机器上连接的终端是另一回事,即使这样它也能正常工作。怎么样?
  • /dev/tty 始终是当前进程的控制终端的别名。
  • @ChrisDodd - 这真是一口;-)。 system("read -sn1"); 似乎也能正常工作。
  • @DigitalTrauma:仅当 bash 是您的外壳时。
  • @ChrisDodd - 是的 - 这很可能是新手 ubuntu 安装的情况。如果不是,我猜system("/bin/bash -c 'read -sn1'"); 应该处理好这个。
猜你喜欢
  • 2010-09-10
  • 2012-07-13
  • 2013-02-05
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
相关资源
最近更新 更多