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,14 @@ 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
+ try :
206
+ if self ._name [0 ] == "/" :
207
+ reported_name = self ._name [1 :]
208
+ except Exception :
209
+ pass
210
+ return reported_name
202
211
203
212
@property
204
213
def size (self ):
@@ -224,8 +233,8 @@ def unlink(self):
224
233
In order to ensure proper cleanup of resources, unlink should be
225
234
called once (and only once) across all processes which have access
226
235
to the shared memory block."""
227
- if _USE_POSIX and self .name :
228
- _posixshmem .shm_unlink (self .name )
236
+ if _USE_POSIX and self ._name :
237
+ _posixshmem .shm_unlink (self ._name )
229
238
230
239
231
240
_encoding = "utf8"
0 commit comments