Заменить текущий процесс вызовом подпроцесса?

19

В python есть способ вызвать новый процесс, передать ему тот же контекст, как стандартные потоки ввода-вывода, закрыть текущий процесс и дать управление вызванному процессу? Это эффективно заменит процесс.

У меня есть программа, поведение которой я хочу повторить. Тем не менее, он использует стороннюю библиотеку, и кажется, что единственный способ, которым я могу действительно убивать потоки, вызываемые этой библиотекой, - это выйти из моего процесса python.

Кроме того, похоже, что это может помочь управлять памятью.

    
задан eacousineau 19.07.2011 в 09:21
источник

1 ответ

23

Возможно, вас заинтересует os.execv() и друзей:

  

Все эти функции выполняют новую программу, заменяя текущий   обработать; они не возвращаются. В Unix загружается новый исполняемый файл   в текущий процесс и будет иметь тот же идентификатор процесса, что и   вызывающий абонент. Ошибки будут отображаться как исключения OSError.

    
ответ дан detly 19.07.2011 в 09:31
  • Обратите внимание, что вызов будет выглядеть примерно как os.execvp ('python.exe', ['python.exe', 'arg1', 'arg2']). Обратите внимание, что несколько интуитивно понятный «python.exe» появляется дважды. См. Этот ответ для получения более подробной информации. –  Evgeni Sergeev 22.10.2014 в 14:55