【问题标题】:Why does matlab causes terminal std out crash and how do I fix it?为什么 matlab 会导致终端标准输出崩溃,我该如何解决?
【发布时间】:2013-07-19 14:13:05
【问题描述】:

每次我在命令行上完成运行 matlab 代码集时,当我退出 matlab 时,标准输出就会变得混乱。我仍然可以使用终端窗口,但是我输入的任何内容都不会显示在屏幕上,这让我要么瞎了眼打字,要么打开一个新终端并过度使用cd 到旧位置。

当我使用make 运行 matlab 集合时,每次都会发生这种情况,由于我在这方面做了很多工作,结果非常烦人。有谁知道这里有什么问题以及我应该如何解决它?

【问题讨论】:

  • 尝试输入stty sane,有帮助吗?如果它有帮助,则意味着您的 makescript 中的某些内容正在将二进制数据转储到终端上,这会弄乱终端的配置。 stty sane 恢复配置。
  • 是的,它有效。谢谢!
  • 太棒了。现在你只需要弄清楚脚本的哪一部分实际上是在搞乱终端。
  • 这是我的 Makefile 代码:matlab -nodesktop -nosplash -r run。不过,我真的看不出它在哪里倾倒任何东西。
  • 那么必须是matlab进程本身

标签: matlab shell terminal stdout


【解决方案1】:

正如 cmets 中所指出的,makescript 可能会将“坏”字符转储到终端。您可以通过重定向输出来防止这种情况(但可能会丢失有用的信息)——而不是将其发送到终端窗口,您可以将其发送到文件,甚至 /dev/null(“天空中的大比特桶”)。

然而,潜在的问题是您的 makefile 甚至首先将这些字符发送到终端。我建议您将输出通过管道传输到带有make > myDump.txt 之类的文件,然后检查生成的文件以查看发生了什么,以及在您的makefile 中的哪个位置创建了问题。执行此操作时可能仍会得到一些输出 - 这是因为默认情况下 > 仅重定向 stdout 而不是 stderr - 第二个输出流用于错误消息。您可以使用make 2>&1 myDump.txt 将两者都重定向到一个文件。

您已经看到了使用stty sane 来恢复终端状态的建议——我在这里重复一遍,以防有人只看答案,而不是看cmets;但我不相信它:-)。

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 2014-05-31
    • 2016-08-06
    • 2012-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多