擅长:python、mysql、java
<p>从内部看,它相当于:</p>
<pre><code>import os
import sys
f = os.popen('file -b "%s" 2> %s' % (sys.executable, os.devnull))
f.read()
f.close()
</code></pre>
<p>为了使<code>popen()</code>工作,它必须能够得到<code>SIGCHLD</code>信号,告诉它一个子进程已退出。似乎执行<code>iotop</code>的环境有一个自定义的reaper进程,该进程拦截{<cd2>},并阻止python获得进程退出的通知。因此,当函数调用<code>.close()</code>时,python会尝试终止已经死掉的进程,并从操作系统获得一个错误。在</p>
<p>如果您不能重新配置环境以允许<code>SIGCHLD</code>通过,我认为您将不得不求助于丑陋的黑客攻击。在</p>
<p>将<code>iotop</code>包装在一个脚本中,monkey用一个总是返回相同元组的函数(类似于<code>('64bit', 'ELF')</code>-请参考real<code>architecture()</code>的输出)来修补{<cd8>}应该可以让您继续。在</p>
<p>或者,您只需制作<code>platform.py</code>文件的本地副本并直接编辑它,将cron作业的<code>PYTHONPATH</code>设置为指向该新文件。在</p>