在获取实时日志时,子进程终止失败

时间:2017-05-23 19:04:16

标签: python

models.Polls.create({
    createdBy: user.get('name'),
    userId: user_id, 
    voter_ids: [],
    options: [
      {your first option},
      {another option}
    ]
  }, {
    include: [ models.Options ]
  }
)

这样工作正常并打印"再见",但以下代码没有终止,继续打印日志内容,并且不会打印" bye"。

#!/usr/bin/python
import subprocess
import signal
import time
p=subprocess("adb devices")
p_id=p.pid
time.sleep
os.kill(p_pid,signal.SIGINT)
print "bye"

请建议

提前致谢 布沙拉

1 个答案:

答案 0 :(得分:0)

#!/usr/bin/python
import subprocess
import time
p=subprocess.Popen(['adb', 'logcat', '-v', 'time', 'event'])
time.sleep(1) # wait for a second
p.kill()
print "bye"

值得注意的项目:

  • 如果您使用shell,您的信号将传递到 shell ,而不是它启动的进程。为了确保信号直接传递给过程,请直接运行该过程。
  • time.sleep本身绝对没有任何意义;它需要被调用为函数,如time.sleep(1)中所示,才能产生任何效果。
  • 使用p.kill()subprocess模块为当前平台选择适当的终止机制,而不是os.kill()