如何使用python将控制C发送到Mac终端?
我有一个python脚本,需要将控制C发送到mac终端。我已尝试发送纯文本“^C”,但我发现终端无法识别该命令。(终端表示python创建的伪终端) 基本上,我正在使用终端来运行一个旧的Unix可执行文件,我能想到的唯一优雅地终止它的方法是发送中断信号。有没有办法让终端误以为我按了控制键C如何使用python将控制C发送到Mac终端?,python,macos,terminal,interrupt,Python,Macos,Terminal,Interrupt,我有一个python脚本,需要将控制C发送到mac终端。我已尝试发送纯文本“^C”,但我发现终端无法识别该命令。(终端表示python创建的伪终端) 基本上,我正在使用终端来运行一个旧的Unix可执行文件,我能想到的唯一优雅地终止它的方法是发送中断信号。有没有办法让终端误以为我按了控制键C 提前谢谢 如果可以使用获取进程的PID,则可以显式地向进程发送SIGINT信号 这将要求您插入脚本以获取进程PID,但这是模拟“ctrl-c”行为的最佳方式。如果您使用子进程的Popen打开进程,您应该能够发
提前谢谢 如果可以使用获取进程的PID,则可以显式地向进程发送SIGINT信号
这将要求您插入脚本以获取进程PID,但这是模拟“ctrl-c”行为的最佳方式。如果您使用
子进程的Popen打开进程,您应该能够发送如下控制信号:
proc.send_signal(signal.SIGINT)
如果工具不是交互式的,SIGTERM
不是同样/更合适吗?我一直认为,如果底层命令没有捕获到它并为您终止该命令,那么解释它的是shell,SIGINT
。。。。对于那些不熟悉信号的人,当您在终端中键入control-c时,它通常会向应用程序发送一个信号,而不是发送一个文本control-c。应用程序永远看不到control-c字符,这就是为什么只是将control-c打印或管道传输到应用程序永远不起作用的原因。啊…这就是为什么…现在更有意义了。关于获取PID有什么提示吗?
proc.send_signal(signal.SIGINT)