结束脚本的终端命令



>想知道我将如何编码到脚本中,以便如果用户输入命令,它将结束该脚本的进程。例如,我运行scriptname.py并在那里编码,当终端命令输入终端时,它将关闭该脚本。

这也会强制关闭脚本吗?或者它仍然会运行代码然后关闭它。我现在对其进行了编码,以便当我按 q 时它会关闭运行代码的程序,但我希望能够在终端中执行此操作。

cv2.imshow("Diff", frame)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break 

目前我像这样编码,所以当我按 q 时,它将结束任务。

谢谢。

你必须给你的代码一个外部输入。一种简单的方法是使用命名管道(假设您使用的是 Linux 操作系统(。使用 创建命名文件

mkfifo mypipe

现在在python中,你可以打开命名管道

import os
pipe = os.fdopen(os.open('mypipe', os.O_RDONLY | os.O_NONBLOCK))

如果代码在等待输入时没有其他任何操作,则可以忽略O_NONBLOCK标志。然后它将等待在管道中写入某些内容。

因此,现在对于等待,您可以使用 while 循环来检查管道是否收到了您想要的命令。

while pipe.read().rstrip() != "terminalcommand":
#something to do while waiting. time.sleep() maybe? Or just pass

如果您不知道命名管道的行为方式,则可以像普通文件一样向其写入一些内容。由于现在代码等待terminalcommand,你可以这样做

echo terminalcommand > mypipe

以退出 while 循环。如果要使用单个命令,请在终端中创建别名。

alias stopmyprogram="echo terminalcommand > [directory to mypipe]/mypipe"

您可以通过将该行添加到文件~/.bash_aliases

最新更新