share memory

D

davidwal

Hey Leute,
ich habe zwei unterschiedliche Prozesse, die Daten austauschen müssen. einer schreibend und der andere lesend. Habe mir gedacht 1000x 5byte Sgemente als ShareM anzulegen und die daten dort abzulegen.
Also ArraySize = 1000 und SegmentSize =5
Code:
int shmid[iArraySize];
	key_t key[iArraySize];
	void *shm[iArraySize];
	int iSKey = iStartKey;
	/*
	 * distribute keys
	 */
	
	
	for (int i=0; i<iArraySize; i++) {
		key[i] = iSKey;	
		if ( (shmid[i] = shmget( key[i], iSegSize, IPC_CREAT | 0666)) < 0 ) {
			cout<<i<< " SK: "<< key[i] << endl;
			perror("error: shmget");
		} 
		iSKey++;
	}
gibt aber immer nur das zurück
....
38 SK: 1440038
error: shmget: No space left on device
39 SK: 1440039
error: shmget: No space left on device
40 SK: 1440040
error: shmget: No space left on device
41 SK: 1440041
error: shmget: No space left on device
42 SK: 1440042
error: shmget: No space left on device
43 SK: 1440043
error: shmget: No space left on device
44 SK: 1440044
error: shmget: No space left on device
45 SK: 1440045
error: shmget: No space left on device
46 SK: 1440046
....
Was bedeutet das? Der StartKey ist in einer Headerdatei für Schreibe/Leseprozess erreichtbar.

Wo liegt das Problem
????
Gruss David

ADD: Da ist mir gerade noch etwas aufgefallen. Was haben die Key mit dem Speicherbereich zu tun?? wenn mich 1000 mal 5byte grosse segmente erstellen möchte - das es sein das beim 2333 schluss ist - siehe oben??

GIBT ES BEFEHLE UNTER LINUX WOMIT MAN SICH DENN AKTUELLEN VERBRAUCHTEN SM ANSCHAUEN KANN??
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Themen

X startet nichtmehr

Rollei Mini Wifi Camcorder

dovecot und postfix Konfiguration Problem

Festplatte friert ein nach suspend/resume

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Zurück
Oben