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 09:00 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 133 (pdf) a HackSpace 70 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 23:55 | Nová verze

    Po půl roce vývoje od vydání verze 44 bylo vydáno GNOME 45 s kódovým názvem Rīga. Přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře. Krátké představení na YouTube. Jednou z nejviditelnějších změn je odstranění tlačítka Činnosti (Activities) v levém horním rohu. Nově je tam indikátor ploch. Výchozím prohlížečem obrázků je nově Loupe, nahradil Eye of GNOME (eog). Novou aplikací pro práci s webovou kamerou je Snapshot, nahradil Cheese. Rozšíření GNOME Shellu fungující v předchozích verzích nejsou s verzí 45 kompatibilní.

    Ladislav Hagara | Komentářů: 2
    včera 17:55 | Komunita

    Linux Foundation představila a zaštítila svobodný a otevřený fork Terraformu s názvem OpenTofu. Ten vznikl pod původním názvem OpenTF jako reakce na přelicencování Terraformu na BSL (Business Source License) společností HashiCorp.

    Ladislav Hagara | Komentářů: 2
    včera 11:22 | IT novinky

    Google oznámil (en), že konverzační AI Bard (Wikipedie) může nyní komunikovat s aplikacemi a službami Google: "Díky nejnovějšímu rozšíření služby může Bard najít a zobrazit relevantní informace z nástrojů společnosti Google, které používáte každý den, jako je například Gmail, Dokumenty, Disk, Mapy, YouTube a Letenky Google, a to i když jsou potřebné informace v různých aplikacích a službách."

    Ladislav Hagara | Komentářů: 0
    včera 08:00 | Zajímavý software

    Apache Pinot (GitHub, Wikipedie) dospěl do verze 1.0. Jedná se o realtimeový distribuovaný OLAP datastore navržený tak, aby na OLAP dotazy odpovídal s nízkou latencí.

    Ladislav Hagara | Komentářů: 0
    19.9. 19:44 | Nová verze

    Byla vydána Java 21 / JDK 21. Nových vlastností (JEP - JDK Enhancement Proposal) je 15. Jedná se o LTS verzi. Nová Java / JDK vychází každých 6 měsíců.

    Ladislav Hagara | Komentářů: 14
    19.9. 16:55 | Nová verze

    Byla vydána betaverze Fedora Linuxu 39, tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 17. října. Nový Fedora Linux přinese GNOME 45, LibreOffice 7.6, GCC 13.2, …

    Ladislav Hagara | Komentářů: 9
    19.9. 12:33 | Nová verze

    Byla vydána verze 17.0.1, tj. první veřejná verze z nové řady 17.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools, Libc++, Polly a Flang.

    Ladislav Hagara | Komentářů: 6
    19.9. 11:33 | Zajímavý projekt

    Z aktuálních akcí na Humble Bundle lze vypíchnout sady knih Become a Python Expert by Pearson a Software Architecture by O'Reilly nebo hru PC Building Simulator (Steam, ProtonDB).

    Ladislav Hagara | Komentářů: 0
    19.9. 10:55 | Nová verze

    Craig Loewen se na blogu Microsoftu rozepsal o zářijové aktualizaci Windows Subsystému pro Linux (WSL) aneb o předběžném vydání 2.0.0. Nové experimentální vlastnosti (autoMemoryReclaim, sparseVhd, networkingMode, dnsTunneling, firewall, autoProxy) představil také na YouTube.

    Ladislav Hagara | Komentářů: 26
    Knihy s linuxovou tematikou
     (20%)
     (16%)
     (51%)
     (26%)
    Celkem 267 hlasů
     Komentářů: 11, poslední 17.9. 19:19
    Rozcestník

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

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

    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.