Sdilena pamet – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Sdilena pamet – C / C++ – Fórum – Programujte.comSdilena pamet – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
markez
~ Anonymní uživatel
5 příspěvků
15. 5. 2008   #1
-
0
-

#include <sys/types.h>

#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
key_t key = 5678;
int shmid;
int a =1;
int *data,*data2,pokus;
data = &a;

shmid = shmget(key, sizeof(int),0666|IPC_CREAT);
data = (int *) shmat(shmid,(void *)0,0);
*data = 1;
shmdt(data);
shmctl(shmid,IPC_RMID,0);

return(0);
}


pada to na sigsegv nevie niekto kde je chyba

Nahlásit jako SPAM
IP: 195.113.69.–
Reklama
Reklama
olgo0
Věrný člen
16. 5. 2008   #2
-
0
-

a na com konkretne ti to pada? u mna s tym nieje ziaden problem dokonca ani valgrind(valgrind.ord) nema namietok.

Nahlásit jako SPAM
IP: 89.173.33.–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
markez
~ Anonymní uživatel
5 příspěvků
16. 5. 2008   #3
-
0
-

To olgo : no pokial tam nemam *data = 1; tak to ide s tym to vypise hlasku neopravneny pristu do pamate sigsegv

Nahlásit jako SPAM
IP: 147.32.121.–
olgo0
Věrný člen
16. 5. 2008   #4
-
0
-

To markez : a co navratove hodnoty zo shmat a shmget?

btw.:ten valgrind vazne skus casto sa dozvies co ani netusis

Nahlásit jako SPAM
IP: 89.173.33.–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
16. 5. 2008   #5
-
0
-

To olgo : tak uz som ten problem vyriesil, vyskusal som to prihlaseny ako root :) teraz riesim dalsi problem tak ho sem pridam ked uz je tu to vlakno... teda v strukture je pole ktoremu dlzku urci az proces a zapise don data ... to ide ale potom ked chce druhy proces citat tie data tak to uz nejde... moze sa to alokovat takto?

btw : co je to ten valgrind?

kod:

#include <sys/types.h>

#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

typedef struct {

int cislo;
int *pole;

} pokladna;


int main()
{
key_t key = 5678;
int shmid;
int i,j;
pokladna *data,*data2;
pokladna *pole;
pid_t child_pid;

//vytvorenie zdielaneho sktoru
shmid = shmget(key, 5*sizeof(pokladna),IPC_CREAT);

//vytvorenie dalsieho procesu
child_pid = fork ();
if (child_pid != 0)
{
printf ("Ja som rodic a moje cislo procesu je %d\n", (int) getpid ());

printf("rodic konci \n");
}

else {
printf ("Ja som potomok a moje cislo procesu je %d\n", (int) getpid ());
data = (pokladna *) shmat(shmid,(void *)0,0);
//potomok zapise nieco do zdielanej pamate
for( i = 0; i < 5 ; i++)
{
data->cislo = i;
data->pole = (int *) malloc( (i+1)*sizeof(int) );

for(j = 0 ; j < i+1; j++ )
{
data->pole[j] = i;
}
data++;
}
shmdt(data);
printf("potomok cislo %d konci \n ",(int) getpid() );
_exit(0);
}
wait();

data2 = (pokladna *) shmat(shmid,(void *)0,0);
for(i = 0 ; i < 5; i++)
{
printf ("Cislo struktury je %d\n" , data2->cislo);
//printf ("Hodnoty su: ");
//for(j=0; j < (data2->cislo)+1 ; j++)
// {
// printf(" %d", data2->pole[j] );
//}
//printf("\n");
data2++;
}
shmdt(data2);


shmctl(shmid,IPC_RMID,0);
return(0);
}

Nahlásit jako SPAM
IP: 147.32.121.–
olgo
~ Anonymní uživatel
471 příspěvků
16. 5. 2008   #6
-
0
-
Nahlásit jako SPAM
IP: 89.173.33.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 58 hostů

Podobná vlákna

Sdilena pamet - 2d pole — založil smoky

Paměť.... — založil yaqwsx

Pamet — založil Lukaydo

Není paměť — založil hráč

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý