os.execve ()

os.execve ( path, args, env )

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

Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому, если в этих открытых файлах могут быть буферизованные данные, вы должны очистить их с помощью sys.stdout.flush () или os.fsync () перед вызовом функции os.exec*().

Варианты 'l' и 'v' функций exec*() отличаются тем, как передаются аргументы командной строки. С вариантами 'l', пожалуй, легче всего работать, если количество параметров фиксировано при написании кода; отдельные параметры просто становятся дополнительными параметрами для функций execl*(). Варианты 'v' хороши, когда количество параметров является переменным, а аргументы передаются в виде списка или кортежа в качестве параметра args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, но это не принудительно.

Для execle (), execlpe (), execve () и execvpe () (обратите внимание, что все они заканчиваются на 'e') параметр env должен быть отображением, которое используется для определения переменных среды для нового процесса (эти используются вместо среды текущего процесса); все функции execl (), execlp (), execv () и execvp () заставляют новый процесс наследовать среду текущего процесса.

Для execve () на некоторых платформах путь path также может быть указан как дескриптор открытого файла. Эта функция может не поддерживаться на вашей платформе; вы можете проверить, доступен ли он, используя os.supports_fd. Если он недоступен, его использование вызовет NotImplementedError.

Вызывает событие аудита os.exec с аргументами path, args, env.

Доступность: Unix, Windows.

Новое в версии 3.3: добавлена поддержка указания пути в качестве дескриптора открытого файла для execve ().

Изменено в версии 3.6: Принимает объект, подобный пути (path-like object ).

Last updated