【问题标题】:Terminate Python in Terminal (control-C just printing ^C) macOS 10.12在终端中终止 Python(control-C 只打印 ^C)macOS 10.12
【发布时间】:2018-05-08 17:32:04
【问题描述】:

所以我一直在使用 control-z 来停止我的 python 脚本,但我最近注意到它们在活动监视器中仍然处于活动状态并且只能在那里终止它们。 Control-C 不起作用,只打印出 ^C。也许组合被重新映射?关于我如何解决这个问题的任何建议。

【问题讨论】:

  • 感谢您的帮助。问题解决了!
  • 太棒了!我发布了我的 cmets 作为答案。你能说一下你做了什么来解决这个问题吗?
  • Ctrl-D 通常被映射为在交互时在 shell 中发送 EOF。

标签: python macos python-2.7 terminal macos-sierra


【解决方案1】:

默认情况下CTRL+Z 会暂停一个进程并将其置于后台,请参阅man bash 并搜索job control

在 OS X 标准 bash 上,CTRL+C向前台进程发送SIGINT(中断信号),但也会打印^CSIGINT 可以被正在运行的进程忽略或处理。

默认情况下,python 处理 SIGINT 并将其转换为 KeyboardException 如果您的脚本处理像 except Exception: 或类似的一般异常(一个非常糟糕的主意),那么它可以忽略 CTRL+C

检查您的脚本以进行信号处理和一般异常处理。

要检查终端类型stty -a 上的重新映射并查找cchars,您应该会看到intr = ^C;susp = ^Z;

【讨论】:

  • 谢谢,我的程序有一个异步处理程序,它阻塞了 SIGINT。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多