2016-04-28 16 views
0
IPC_SHM_FD = shm_open("/dev/ipc", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); 

Das obige schlägt mit EINVAL (mit oder ohne O_CREAT) fehl. Datei /dev/ipc existiert.shm_open() schlägt mit EINVAL fehl

%ls -la 
crwxrwxrwx 1 root root 251, 0 Apr 25 15:30 /dev/ipc 

gdb Ausgang:

Breakpoint 1, ipc_mem_init (min_blk_shift=7) at ipcd.c:335 
335   IPC_SHM_FD = shm_open("/dev/ipc", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); 
(gdb) n 
336   if (IPC_SHM_FD == -1) { 
(gdb) n 
337    perror("shm_open: "); 
(gdb) p errno 
$1 = 22 
(gdb) 

Was ist hier ungültig?

Antwort

0

Zitiert shm_open (3):

Für den mobilen Einsatz, eine Shared-Memory-Objekt sollte durch einen Namen der Form/somename identifiziert werden; das heißt, eine Null-terminierte Zeichenkette von bis zu NAME_MAX (d. h. 255) Zeichen, bestehend aus einem anfänglichen Schrägstrich, gefolgt von einem oder mehreren Zeichen, , von denen keine Schrägstriche sind.

Wählen Sie einen anderen Namen.