我想做类似于这里的第二个答案的事情(但不太相似):Simulate Ctrl-C keyboard interrupt in Python while working in Linux
它更简单,我想我只是错过了一些东西。比如说,从 python 脚本中,我只想调用 'ping' 并在第 10 次之后终止它。我正在尝试从上面的链接中进行操作:
p = subprocess.Popen(['ping', 'google.com'], stdout=subprocess.PIPE)
for line in p.stdout:
print line
if re.search('10', line):
break
os.kill(p.pid, signal.SIGINT)
但它不起作用。
而且我还希望显示“ping”的常规输出。我该怎么做呢?
编辑:这实际上不是我想做的“ping”。我只是将它用作具有连续输出的命令的示例,我想及时终止该命令。
更具体地说,我正在运行旧版本的 BitTorrent(来自第 3 个答案的 v5.0.9:在哪里可以找到 BitTorrent 源代码?),我通过 python 脚本调用它。bittorrent-console.py 是一个简单的终端版本,因此是“控制台”。它定期输出多行。就像是:
saving: filename
file size: blah
percent done: 100.0
blah: blahblah
我实际上是这样称呼它的:
subprocess.call(['./bittorrent-console.py', 'something.torrent'])
当我看到“完成百分比:”为 100.0 时,我想自动终止它。
编辑:我在 CentOS、Python 2.6 上运行。