Witam

W czasie uruchomienia programu wyskakuje mi błąd:
nie udalo sie utworzyc pamieci wspolnej : Success

Wie może gdzie jest problem ??

 
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <ctime>
#include <signal.h>
#include "dziel.h"

using namespace std;


bool czyKoniec = true;
void siga(int sig)
{
	cout << "Serwer zostanie wylaczony, kiedy wszyscy klienci dostana odpowiedz od serwera " << endl;
	czyKoniec = false;
	
}

int main(int argc, char* argv[])
{
(void) signal(SIGINT, siga);
int ls;
Dane d;
int shmid;
void *pw;

	//tworzenie pamieci wspolnej
	if ( ((shmid=shmget(klucz,sizeof(d), IPC_CREAT|prawa)) == -1 ) && (errno == EEXIST))  
	{ 
		shmctl(shmid, IPC_RMID, NULL);
		//bezwzgledne utworzenie kolejki
		shmid = shmget(klucz, sizeof(d), IPC_CREAT|IPC_EXCL|prawa);
	}
	else
	{
		perror("nie udalo sie utworzyc pamieci wspolnej ");
		exit(2);
	}
	do
	{
		//Gdy wartość zmiennej addres jest równa NULL system sam nadawartość adresowi po którym widziany jest dołączany segment pamięci
		if ( (pw=shmat(shmid,0,0)) == (char*)-1) perror("Nie udestepniono segmentu"); 
		bcopy(&d, pw, sizeof(d));
		cout << "czas odebrany z pamieci wynosi " << d.pid << endl;
	
	}while(czyKoniec == true);
	shmctl(shmid, IPC_RMID, NULL);
}


Z góry dziękuję za pomoc.