diff options
author | Davin Potts <applio@users.noreply.github.com> | 2019-02-25 22:41:52 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-25 22:41:52 (GMT) |
commit | aadef2b41600cb6a4f845cdc4cea001c916d8745 (patch) | |
tree | 8fabf238d3ed9f362a5470bba2d7362fc81e6695 | |
parent | 8377cd4fcd0d51d86834c9b0518d29aac3b49e18 (diff) | |
download | cpython-aadef2b41600cb6a4f845cdc4cea001c916d8745.zip cpython-aadef2b41600cb6a4f845cdc4cea001c916d8745.tar.gz cpython-aadef2b41600cb6a4f845cdc4cea001c916d8745.tar.bz2 |
bpo-36102: Prepend slash to all POSIX shared memory block names (#12036)
-rw-r--r-- | Lib/multiprocessing/shared_memory.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/Lib/multiprocessing/shared_memory.py b/Lib/multiprocessing/shared_memory.py index e4fe822..ebc8885 100644 --- a/Lib/multiprocessing/shared_memory.py +++ b/Lib/multiprocessing/shared_memory.py @@ -30,7 +30,7 @@ _SHM_SAFE_NAME_LENGTH = 14 # Shared memory block name prefix if _USE_POSIX: - _SHM_NAME_PREFIX = 'psm_' + _SHM_NAME_PREFIX = '/psm_' else: _SHM_NAME_PREFIX = 'wnsm_' @@ -68,6 +68,7 @@ class SharedMemory: _buf = None _flags = os.O_RDWR _mode = 0o600 + _prepend_leading_slash = True if _USE_POSIX else False def __init__(self, name=None, create=False, size=0): if not size >= 0: @@ -95,6 +96,7 @@ class SharedMemory: self._name = name break else: + name = "/" + name if self._prepend_leading_slash else name self._fd = _posixshmem.shm_open( name, self._flags, @@ -198,7 +200,11 @@ class SharedMemory: @property def name(self): "Unique name that identifies the shared memory block." - return self._name + reported_name = self._name + if _USE_POSIX and self._prepend_leading_slash: + if self._name.startswith("/"): + reported_name = self._name[1:] + return reported_name @property def size(self): @@ -224,8 +230,8 @@ class SharedMemory: In order to ensure proper cleanup of resources, unlink should be called once (and only once) across all processes which have access to the shared memory block.""" - if _USE_POSIX and self.name: - _posixshmem.shm_unlink(self.name) + if _USE_POSIX and self._name: + _posixshmem.shm_unlink(self._name) _encoding = "utf8" |