擅长:python、mysql、java
<p>你可以用无限循环</p>
<pre><code>def alarm():
while True:
if "No answer" in open("/var/log/hostmonitor.log").read():
print "Alarm!"
playalarm=subprocess.Popen(['omxplayer','/root/Alarm/alarm.mp3'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,close_fds=True)
log = open("/var/log/hostmonitor.log","w")
log.write("Checked")
log.close()
time.sleep(5)
playalarm.stdin.write('q')
else:
print"Checked"
time.sleep(5)
</code></pre>
<p>这个错误</p>
<blockquote>
<p>RuntimeError: maximum recursion depth exceeded</p>
</blockquote>
<p>因为<code>alarm()</code>函数的无限递归调用。每个递归调用都需要一定量的堆栈内存。堆栈空间是有限的,经过一定数量的递归调用后,堆栈将溢出。为了防止这种情况,<strong>Python</strong>限制了递归的最大深度。<br/>
在你的例子中,你根本不需要递归。在</p>