【问题标题】:How can I implement shell job control basics in Python?如何在 Python 中实现 shell 作业控制基础知识?
【发布时间】:2023-04-07 05:22:01
【问题描述】:

大多数现代 shell 都实现了基本的作业控制,例如挂起、恢复、中断和后台。

如何在 Python 中使 shell 对 ^Z、fg、^C 和 bg(它们出现在 bash 中)敏感?或者我应该读什么?

【问题讨论】:

  • 你正在用 Python 实现一个 shell?
  • 你说的是交互模式吗?
  • 如果您正在寻找更高级的键输入和字符的 shell 读/写,请参阅 ncurses。
  • 是的,或者至少我正在尝试:JonathansCorner.com/cjsh

标签: python bash shell unix job-control


【解决方案1】:

不需要做任何事情:

python -c 'import time; time.sleep(600)'

你可以测试你所有的键盘组合;)

【讨论】:

    【解决方案2】:

    您可以使用signal 模块捕获发送到您的程序的信号。例如,^Z 在类 Unix 系统中表示 SIGTSTP

    import signal
    jobs = []
    
    def handler(signum, frame):
        jobs.append(frame)
    
    signal.signal(signal.SIGTSTP, handler)
    

    现在,当您键入 Ctrl+Z 时,handler 将被调用并打印“catch”。您可以使用signal.SIGINT 捕获^C

    【讨论】:

      猜你喜欢
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多