Я хочу убить подпроцесс, если время выполнения слишком велико.Я знаю, что должен использовать os.kill
или os.killpg.
Однако проблемы возникают, если я не являюсь пользователем root.Например, в моем разработанном графическом интерфейсе я хочу вызвать подпроцесс и os.kill
или os.killpg
, чтобы убить подпроцесс.Но мой графический интерфейс принадлежит Apache.Поэтому, когда дело доходит до команды os.kill, я получаю сообщение об ошибке:
[type:
exceptions.OSError value: [Errno 1] Operation not permitted
И, кроме того, версия моего питона 2.4.3. , поэтому terminate ().не может быть использовано.
Может ли кто-нибудь дать мне несколько идей?
Большое спасибо!
PS Связанная часть моего кода:
timeout=4
subp = subprocess.Popen('sudo %s'%commandtosend, shell=True,preexec_fn=os.setsid, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while subp.poll() is None:
time.sleep(0.1)
now = datetime.datetime.now()
if (now - start).seconds > timeout:
os.kill(subp.pid, signal.SIGKILL)
#os.killpg(subp.pid, signal.SIGKILL)
break