abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:00 | Zajímavý článek

    Jiří Eischmann se v příspěvku Fiasko jménem W Social na svém blogu věnuje evropské sociální síti W: "W Social je příkladem toho, že se problémy sociální sítí nedají řešit od exekutivního stolu. Když na začátku tohoto roku v Davosu oznámili vznik nové sociální sítě W Social, politici se mohli přetrhnout ve chvalozpěvech. Konečně evropská sociální síť a ještě s ověřením identity. … Jak se ukázalo, když v Davosu W Social oznamovali, neměli kromě

    … více »
    Ladislav Hagara | Komentářů: 1
    včera 18:00 | Bezpečnostní upozornění

    Výrobce hardwarových kryptoměnových peněženek Trezor upozorňuje na bezpečnostní incident u společnosti Brevo, kterou využívá k odesílání newsletterů. Útočník na e-mailové adresy odeslal phishingový e-mail.

    Ladislav Hagara | Komentářů: 0
    včera 14:33 | Komunita

    Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za srpen 2026. Aplikace XApp mají vlastní webovou stránku xapp-project.org. Představena byl čtečka EPUB s názvem Xepub a kalendář Clockenstein.

    Ladislav Hagara | Komentářů: 0
    včera 11:44 | Nová verze

    Byla vydána nová verze 3.2.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 11:33 | Nová verze

    Bylo vydáno Ubuntu 24.04.5 LTS, tj. páté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Komunita

    Švýcarsko testuje přechod z Microsoft 365 na FOSS, konkrétně balík openDesk (Wikipedie) od německé státní společnosti ZenDiS (Wikipedie), s cílem posílit digitální suverenitu.

    Ladislav Hagara | Komentářů: 9
    včera 04:22 | Komunita

    V italském městě Pordenone probíhá LibreOffice Conference 2026. Zúčastnit se lze i online.

    Ladislav Hagara | Komentářů: 0
    10.9. 18:33 | Nová verze

    Svobodný (GPLv3) šachový engine Stockfish (Wikipedie) byl vydán ve verzi 19 (𝕏). Přehled novinek v příspěvku na blogu. Stockfish 19 je o 44 Elo silnější než Stockfish 18.

    Ladislav Hagara | Komentářů: 0
    10.9. 12:33 | Nová verze

    Byla vydána nová verze 1.13.0 dynamického programovacího jazyka Julia (Wikipedie) určeného zejména pro vědecké výpočty. Přehled novinek v příspěvku na blogu a v poznámkách k vydání. Aktualizována byla také dokumentace.

    Ladislav Hagara | Komentářů: 0
    10.9. 11:11 | Pozvánky

    Organizátoři konference LinuxDays zveřejnili program letošního ročníku a spustili registraci návštěvníků. LinuxDays 2026 se uskuteční 3. a 4. října v areálu ČVUT v pražských Dejvicích, na Fakultě informačních technologií. Těšit se můžete na 70 přednášek a workshopů od 66 přednášejících. Konference bude rozdělena do pěti sálů s různou kapacitou. Vstup na LinuxDays je jako obvykle zdarma, stačí včas vyplnit registrační formulář. Opět je možné si na akci zakoupit oběd, ale je třeba to udělat předem, na místě už to nebude možné.

    Petr Krčmář | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (4%)
     (21%)
     (29%)
     (7%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2648 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Sdílená pamět --> pole

    15.4.2011 10:13 Honza
    Sdílená pamět --> pole
    Přečteno: 793×

    Ahoj jsem v C/C++ trochu začátečník a chtěl bych se zeptat jak udělat abych do sdílený paměti u procesů dostal celý pole??Dostanu tam třeba celou strukturu ale jak tam dostat pole mi moc jasny neni jestli to teda vůbec jde.

    tohle je muj kod:

    #include <stdio.h>
    #include <sys/shm.h>
    #include <sys/stat.h>

    int main(){
    int segment_id;
    //int *shared_memory;
    struct shmid_ds shmbuffer;
    int segment_size;
    const int shared_segment_size = 0x6400;

    typedef struct struct_kamion{
    int id;
    int kolik;
    };
    struct_kamion pole_kamionu[2];

    struct_kamion *shared_memory;

    struct_kamion kamion = {1111,1};
    pole_kamionu[0] = kamion;
    struct_kamion kamion2 = {2222,2};
    pole_kamionu[1] = kamion2;
    /* Alokovani sdileneho pametoveno segmentu */
    segment_id = shmget(IPC_PRIVATE, shared_segment_size, IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR);

    /* Pripojeni sdileneho segmentu */
    shared_memory = (struct_kamion *) shmat(segment_id, NULL, NULL);
    printf("sdilena pamet byla pripojena na adresu %p\n", shared_memory);
    /* Urceni velikosti segmentu */
    shmctl(segment_id, IPC_STAT, &shmbuffer);
    segment_size = shmbuffer.shm_segsz;
    printf("velikost segmentu: %d\n", segment_size);
    /* Zapsani retezce do sdileneho pametoveho segmentu */
    shared_memory[0] = pole_kamionu[0];
    //shared_memory->id = pole_kamionu[0].id;  

    //sprintf(shared_memory, 23);
    /* Odpojeni pametoveho segmentu */
    shmdt(shared_memory);

    /* Nove pripojeni sdileneho segmentu( na urcitou adresu) */
    shared_memory = (struct_kamion*) shmat(segment_id, (void *) 0x5000000, NULL);
    printf("sdilena pamet byla pripojena na adresu %p\n", shared_memory);
    /* Vypis retezce ze sdilene pameti */
    int idKamionu = 4;//shared_memory->id;
    printf("%d\n", idKamionu);
    /* Odpojeni segmentu */
    shmdt(shared_memory);

    /* Dealokovani sdileneho pametoveho segmentu */
    shmctl(segment_id, IPC_RMID, NULL);

    return(0);
    }

    Odpovědi

    15.4.2011 16:18 Sten Fil
    Rozbalit Rozbalit vše Re: Sdílená pamět --> pole
    Se sdilenou je to podobne jako s malloc. Nejlepe na zacatku prg. alokace a na konci to vse uvolnis.

    Zaalokujes si napr. pro 10 zaznamu kamion. sizeof (kamion) * 10.

    A pak pomoci ukazatele pristupujes na jednotlive zaznamy.

    17.4.2011 13:09 Honza
    Rozbalit Rozbalit vše Re: Sdílená pamět --> pole
    A jak bych tam třeba dostal ještě dvourozměrný pole??
    17.4.2011 14:46 ::: | skóre: 14 | blog: e_lama
    Rozbalit Rozbalit vše Re: Sdílená pamět --> pole
    nasimulujes je pomoci jednorozmernyho pole.

    To znamena alokujes

    sizeof(kamion) * pocet_radku * pocet_sloupcu

    a potom misto

    pole[radek][sloupec]

    k tomu pristupujes pomoci

    pole[radek * pocet_sloupcu + sloupec]
    17.4.2011 15:08 zvj
    Rozbalit Rozbalit vše Re: Sdílená pamět --> pole
    Princip je porad stejnej. Shmat() ti pripoji pozadovanej segment a pokud vsechno dobre dopadne tak vrati void pointer na prvni byte. Tenhle pointer si pretypujes na co potrebujes. Pokud chces treba 2-rozmerny pole intu pretypujes na int**.
    int** pole = (int**) shmat(segment_id, NULL, NULL); 
    
    pole[0][0] = ...

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.