diff options
author | Gregory P. Smith <greg@krypto.org> | 2014-08-27 09:41:05 -0700 |
---|---|---|
committer | Gregory P. Smith <greg@krypto.org> | 2014-08-27 09:41:05 -0700 |
commit | a232613679883b94ecd185c040325755b0de4c0f (patch) | |
tree | 02508f22963c965c52d460bb145e60d18eeaec30 | |
parent | 7cea44d3cfa216c63c78ee3262989c1a2d563121 (diff) | |
parent | feac3980ced0d80dc21982d87658876644c60e72 (diff) | |
download | cpython-git-a232613679883b94ecd185c040325755b0de4c0f.tar.gz |
The webbrowser module now uses subprocess's start_new_session=True rather
than a potentially risky preexec_fn=os.setsid call.
-rwxr-xr-x | Lib/webbrowser.py | 15 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
2 files changed, 7 insertions, 11 deletions
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py index 9e47084a91..845f1d004c 100755 --- a/Lib/webbrowser.py +++ b/Lib/webbrowser.py @@ -159,10 +159,8 @@ class BackgroundBrowser(GenericBrowser): if sys.platform[:3] == 'win': p = subprocess.Popen(cmdline) else: - setsid = getattr(os, 'setsid', None) - if not setsid: - setsid = getattr(os, 'setpgrp', None) - p = subprocess.Popen(cmdline, close_fds=True, preexec_fn=setsid) + p = subprocess.Popen(cmdline, close_fds=True, + start_new_session=True) return (p.poll() is None) except OSError: return False @@ -321,11 +319,6 @@ class Konqueror(BaseBrowser): action = "openURL" devnull = subprocess.DEVNULL - # if possible, put browser in separate process group, so - # keyboard interrupts don't affect browser as well as Python - setsid = getattr(os, 'setsid', None) - if not setsid: - setsid = getattr(os, 'setpgrp', None) try: p = subprocess.Popen(["kfmclient", action, url], @@ -343,7 +336,7 @@ class Konqueror(BaseBrowser): p = subprocess.Popen(["konqueror", "--silent", url], close_fds=True, stdin=devnull, stdout=devnull, stderr=devnull, - preexec_fn=setsid) + start_new_session=True) except OSError: # fall through to next variant pass @@ -356,7 +349,7 @@ class Konqueror(BaseBrowser): p = subprocess.Popen(["kfm", "-d", url], close_fds=True, stdin=devnull, stdout=devnull, stderr=devnull, - preexec_fn=setsid) + start_new_session=True) except OSError: return False else: @@ -124,6 +124,9 @@ Core and Builtins Library ------- +- The webbrowser module now uses subprocess's start_new_session=True rather + than a potentially risky preexec_fn=os.setsid call. + - Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the file descriptor is in blocking mode. |