结束脚本的终端命令

问题描述 投票:0回答:1

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

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

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

目前我有它编码,所以当我按q它将结束任务。

谢谢。

python terminal
1个回答
0
投票

您必须为代码提供外部输入。一种简单的方法是使用命名管道(假设您使用的是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来使别名全局可用

© www.soinside.com 2019 - 2024. All rights reserved.