PDA

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

andbin
20-02-2007, 16:56
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!

andbin
20-02-2007, 17:25
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