os.execlp ()
os.execlp ( file, arg0, arg1, ... )
Функции семейства os.exec* () запускают новую программу, заменяя ей текущий процесс; они не возвращают управление обратно. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий. Об ошибках будут сообщаться как об исключениях OSError.
Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому, если в этих открытых файлах могут быть буферизованные данные, вы должны очистить их с помощью sys.stdout.flush ()
или os.fsync () перед вызовом функции os.exec*().
Варианты 'l'
и 'v'
функций exec*() отличаются тем, как передаются аргументы командной строки. С вариантами 'l'
, пожалуй, легче всего работать, если количество параметров фиксировано при написании кода; отдельные параметры просто становятся дополнительными параметрами для функций execl*(). Варианты 'v'
хороши, когда количество параметров является переменным, а аргументы передаются в виде списка или кортежа в качестве параметра args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, но это не принудительно.
Варианты, которые включают 'p'
в конце (execlp (), execlpe (), execvp () и execvpe ()), будут использовать переменную среды PATH
для поиска файла программы file. Когда среда заменяется (с использованием одного из вариантов exec*e, обсуждаемых в соответствующих разделах), новая среда используется в качестве источника переменной PATH
. Другие варианты, execl (), execle (), execv () и execve (), не будут использовать переменную PATH
для поиска исполняемого файла; path должен содержать соответствующий абсолютный или относительный путь.
Вызывает событие аудита os.exec
с аргументами path, args, env.
Доступность: Unix, Windows.
Новое в версии 3.3: добавлена поддержка указания пути в качестве дескриптора открытого файла для execve ().
Изменено в версии 3.6: Принимает объект, подобный пути (path-like object ).
Last updated