Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python将控制C发送到Mac终端?_Python_Macos_Terminal_Interrupt - Fatal编程技术网

如何使用python将控制C发送到Mac终端?

如何使用python将控制C发送到Mac终端?,python,macos,terminal,interrupt,Python,Macos,Terminal,Interrupt,我有一个python脚本,需要将控制C发送到mac终端。我已尝试发送纯文本“^C”,但我发现终端无法识别该命令。(终端表示python创建的伪终端) 基本上,我正在使用终端来运行一个旧的Unix可执行文件,我能想到的唯一优雅地终止它的方法是发送中断信号。有没有办法让终端误以为我按了控制键C 提前谢谢 如果可以使用获取进程的PID,则可以显式地向进程发送SIGINT信号 这将要求您插入脚本以获取进程PID,但这是模拟“ctrl-c”行为的最佳方式。如果您使用子进程的Popen打开进程,您应该能够发

我有一个python脚本,需要将控制C发送到mac终端。我已尝试发送纯文本“^C”,但我发现终端无法识别该命令。(终端表示python创建的伪终端)

基本上,我正在使用终端来运行一个旧的Unix可执行文件,我能想到的唯一优雅地终止它的方法是发送中断信号。有没有办法让终端误以为我按了控制键C


提前谢谢

如果可以使用获取进程的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)