30
30
31
31
# Shared memory block name prefix
32
32
if _USE_POSIX :
33
- _SHM_NAME_PREFIX = 'psm_'
33
+ _SHM_NAME_PREFIX = '/ psm_'
34
34
else :
35
35
_SHM_NAME_PREFIX = 'wnsm_'
36
36
@@ -68,6 +68,7 @@ class SharedMemory:
68
68
_buf = None
69
69
_flags = os .O_RDWR
70
70
_mode = 0o600
71
+ _prepend_leading_slash = True if _USE_POSIX else False
71
72
72
73
def __init__ (self , name = None , create = False , size = 0 ):
73
74
if not size >= 0 :
@@ -95,6 +96,7 @@ def __init__(self, name=None, create=False, size=0):
95
96
self ._name = name
96
97
break
97
98
else :
99
+ name = "/" + name if self ._prepend_leading_slash else name
98
100
self ._fd = _posixshmem .shm_open (
99
101
name ,
100
102
self ._flags ,
@@ -198,7 +200,11 @@ def buf(self):
198
200
@property
199
201
def name (self ):
200
202
"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
202
208
203
209
@property
204
210
def size (self ):
@@ -224,8 +230,8 @@ def unlink(self):
224
230
In order to ensure proper cleanup of resources, unlink should be
225
231
called once (and only once) across all processes which have access
226
232
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 )
229
235
230
236
231
237
_encoding = "utf8"
0 commit comments