bpo-36102: Prepend slash to all POSIX shared memory block names (#12036)
This commit is contained in:
parent
8377cd4fcd
commit
aadef2b416
|
@ -30,7 +30,7 @@ _SHM_SAFE_NAME_LENGTH = 14
|
||||||
|
|
||||||
# Shared memory block name prefix
|
# Shared memory block name prefix
|
||||||
if _USE_POSIX:
|
if _USE_POSIX:
|
||||||
_SHM_NAME_PREFIX = 'psm_'
|
_SHM_NAME_PREFIX = '/psm_'
|
||||||
else:
|
else:
|
||||||
_SHM_NAME_PREFIX = 'wnsm_'
|
_SHM_NAME_PREFIX = 'wnsm_'
|
||||||
|
|
||||||
|
@ -68,6 +68,7 @@ class SharedMemory:
|
||||||
_buf = None
|
_buf = None
|
||||||
_flags = os.O_RDWR
|
_flags = os.O_RDWR
|
||||||
_mode = 0o600
|
_mode = 0o600
|
||||||
|
_prepend_leading_slash = True if _USE_POSIX else False
|
||||||
|
|
||||||
def __init__(self, name=None, create=False, size=0):
|
def __init__(self, name=None, create=False, size=0):
|
||||||
if not size >= 0:
|
if not size >= 0:
|
||||||
|
@ -95,6 +96,7 @@ class SharedMemory:
|
||||||
self._name = name
|
self._name = name
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
|
name = "/" + name if self._prepend_leading_slash else name
|
||||||
self._fd = _posixshmem.shm_open(
|
self._fd = _posixshmem.shm_open(
|
||||||
name,
|
name,
|
||||||
self._flags,
|
self._flags,
|
||||||
|
@ -198,7 +200,11 @@ class SharedMemory:
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
"Unique name that identifies the shared memory block."
|
"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
|
@property
|
||||||
def size(self):
|
def size(self):
|
||||||
|
@ -224,8 +230,8 @@ class SharedMemory:
|
||||||
In order to ensure proper cleanup of resources, unlink should be
|
In order to ensure proper cleanup of resources, unlink should be
|
||||||
called once (and only once) across all processes which have access
|
called once (and only once) across all processes which have access
|
||||||
to the shared memory block."""
|
to the shared memory block."""
|
||||||
if _USE_POSIX and self.name:
|
if _USE_POSIX and self._name:
|
||||||
_posixshmem.shm_unlink(self.name)
|
_posixshmem.shm_unlink(self._name)
|
||||||
|
|
||||||
|
|
||||||
_encoding = "utf8"
|
_encoding = "utf8"
|
||||||
|
|
Loading…
Reference in New Issue