diff --git a/Lib/subprocess.py b/Lib/subprocess.py index f614c903c8837c..4a9a64e5577989 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -715,6 +715,9 @@ def _use_posix_spawn(): # os.posix_spawn() is not available return False + if ((_env := os.environ.get('_PYTHON_SUBPROCESS_USE_POSIX_SPAWN')) in ('0', '1')): + return bool(int(_env)) + if sys.platform in ('darwin', 'sunos5'): # posix_spawn() is a syscall on both macOS and Solaris, # and properly reports errors diff --git a/Misc/NEWS.d/next/Library/2025-04-06-19-25-12.gh-issue-129204.sAVFO6.rst b/Misc/NEWS.d/next/Library/2025-04-06-19-25-12.gh-issue-129204.sAVFO6.rst new file mode 100644 index 00000000000000..d8994bf760b7bc --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-04-06-19-25-12.gh-issue-129204.sAVFO6.rst @@ -0,0 +1,2 @@ +Introduce new ``_PYTHON_SUBPROCESS_USE_POSIX_SPAWN`` environment variable knob in +:mod:`subprocess` to control the use of :func:`os.posix_spawn`.