Message415249
subprocess.run() and subprocess.Popen() accepts a cwd= parameter to change directory before running the subprocess.
Unfortunately it's not possible to use a file descriptor to run the subprocess in a directory already opened.
For example:
import os
import subprocess
with os.open('/usr/bin', os.O_RDONLY) as f:
subprocess.run(["ls", "-l"], cwd=f, check=True)
fails with
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.9/subprocess.py", line 505, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.9/subprocess.py", line 1754, in _execute_child
self.pid = _posixsubprocess.fork_exec(
Using a file descriptor instead of path is useful to address TOCTOU issues.
Maybe a mean to convert a file descriptor to a Path-like object would do the trick. |
|
Date |
User |
Action |
Args |
2022-03-15 14:55:54 | ydroneaud | set | recipients:
+ ydroneaud |
2022-03-15 14:55:54 | ydroneaud | set | messageid: <1647356154.7.0.125333178117.issue47027@roundup.psfhosted.org> |
2022-03-15 14:55:54 | ydroneaud | link | issue47027 messages |
2022-03-15 14:55:54 | ydroneaud | create | |
|