3030
3131# Shared memory block name prefix
3232if _USE_POSIX :
33- _SHM_NAME_PREFIX = 'psm_'
33+ _SHM_NAME_PREFIX = '/ psm_'
3434else :
3535 _SHM_NAME_PREFIX = 'wnsm_'
3636
@@ -68,6 +68,7 @@ class SharedMemory:
6868 _buf = None
6969 _flags = os .O_RDWR
7070 _mode = 0o600
71+ _prepend_leading_slash = True if _USE_POSIX else False
7172
7273 def __init__ (self , name = None , create = False , size = 0 ):
7374 if not size >= 0 :
@@ -95,6 +96,7 @@ def __init__(self, name=None, create=False, size=0):
9596 self ._name = name
9697 break
9798 else :
99+ name = "/" + name if self ._prepend_leading_slash else name
98100 self ._fd = _posixshmem .shm_open (
99101 name ,
100102 self ._flags ,
@@ -198,7 +200,11 @@ def buf(self):
198200 @property
199201 def name (self ):
200202 "Unique name that identifies the shared memory block."
201- return self ._name
203+ reported_name = self ._name
204+ if _USE_POSIX and self ._prepend_leading_slash :
205+ if self ._name .startswith ("/" ):
206+ reported_name = self ._name [1 :]
207+ return reported_name
202208
203209 @property
204210 def size (self ):
@@ -224,8 +230,8 @@ def unlink(self):
224230 In order to ensure proper cleanup of resources, unlink should be
225231 called once (and only once) across all processes which have access
226232 to the shared memory block."""
227- if _USE_POSIX and self .name :
228- _posixshmem .shm_unlink (self .name )
233+ if _USE_POSIX and self ._name :
234+ _posixshmem .shm_unlink (self ._name )
229235
230236
231237_encoding = "utf8"
0 commit comments