View Full Version : [C] shmget - dubbi
Garet Jax
20-02-2007, 16:46
Scusate sto facendo un po' di :boxe: con l'IPC.
Qualcuno per caso sa dirmi che mi rappresenta esattamente il parametro key_t della shmget?
Grazie
EDIT:
Già che ci siamo mi potreste spigare a cosa serve il flag SHM_RND della funzione shmat?
Chiedo scusa, dal libro (in inglese) non si capisce molto, non riesco a contestualizzare la traduzione (non so e mi avete capito).
Jax
Qualcuno per caso sa dirmi che mi rappresenta esattamente il parametro key_t della shmget?Lo spiega bene <qui> (http://www.advancedlinuxprogramming.com/alp-folder) (nel capitolo 05).
Garet Jax
20-02-2007, 17:07
eh...
piccolo il mondo, è proprio il testo che sto usando e non mi è molto chiaro :)
probabile che sia io che , dopo 4h di studio filato, non capisco una mazza, però...
il testo incriminato è:
"A process allocates a shared memory segment using shmget (“SHared Memory
GET”). Its first parameter is an integer key that specifies which segment to create"
Cosa intende per: ".. è una chiave intera che specifica quale segmento creare."?
Grazie!
il testo incriminato è:
"A process allocates a shared memory segment using shmget (“SHared Memory
GET”). Its first parameter is an integer key that specifies which segment to create"
Cosa intende per: ".. è una chiave intera che specifica quale segmento creare."?Guarda ... queste funzioni per la shared memory non le ho mai usate. Comunque mi sembra abbastanza chiaro (sempre che non sbaglio): quel valore intero è la chiave che due o più processi devono conoscere per poter accedere allo stesso segmento di memoria.
Lo dice anche: diversi processi possono accedere allo stesso segmento di memoria specificando la stessa chiave.
Garet Jax
22-02-2007, 15:02
capisco,
ma sono leggermente confuso.
Questa chiave ma la invento io? Posso decidere un valore in modo tale che tutti i miei processi lo condividano e lavorino su quelli?
Ma, poi, a che serve se infine dei conti il valore con cui lavoro è quello che mi restituisce la shmget?
Grazie per l'aiuto! :)
Garet Jax
23-02-2007, 11:44
nada?
trallallero
23-02-2007, 13:41
io l'ho usato solo 1 volta per curiositá ma non trovo ció che ho fatto.
Ma se cerchi in rete trovi parecchia roba, per esempio:
http://www.cs.cf.ac.uk/Dave/C/node27.html
qui la chiave la fa inserire dall'utente ;)
beppegrillo
23-02-2007, 14:00
è un identificativo univoco, e la funzione che puoi utilizzare per ottenerlo uno da un file è ftok.
Garet Jax
23-02-2007, 15:53
è un identificativo univoco, e la funzione che puoi utilizzare per ottenerlo uno da un file è ftok.
ma a questo punto per identificare cosa, il segmento di memoria?
E l'intero che mi viene restitutito cosa fa?
E poi posso usare un indirizzo a muzzo? Tipo:
int seg_id = shmget (1000, 4096, IPC_CREAT | S_IRUSR | S_IWUSR);
scusate ma io sono confuso :confused:
EDIT:
non sarebbe più intelligente usare direttamente uno solo dei due identificativi?
Perché due?
beppegrillo
23-02-2007, 17:07
L'argomento key specifica la chiave che è associata all'oggetto, eccetto il caso in cui si specifichi il valore IPC_PRIVATE, nel qual caso la coda è creata ex-novo e non vi è associata alcuna chiave, il processo (ed i suoi eventuali figli) potranno farvi riferimento solo attraverso l'identificatore.
http://www.lilik.it/~mirko/gapil/gapilsu188.html#x493-24400012.2.4
Garet Jax
23-02-2007, 18:02
va bene, se mi vengono altre domande to dico :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.