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í
×
    včera 23:49 | Zajímavý článek

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 17:33 | Zajímavý článek

    Bylo vydáno nové číslo hackerského magazínu tmp.0ut: Volume 5.

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

    Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 1
    3.9. 23:11 | Nová verze

    Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 2
    3.9. 16:55 | IT novinky

    NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.

    Ladislav Hagara | Komentářů: 3
    3.9. 15:44 | IT novinky

    Předobjednat si lze nový jednodeskový počítač Arduino VENTUNO Q s předinstalovaným Ubuntu. S 16 GB LPDDR5 a 64 GB eMMC. Pro lokální LLM, agentní AI, počítačové vidění, robotiku…

    Ladislav Hagara | Komentářů: 1
    3.9. 13:00 | Zajímavý software

    Hexpair není nejlepší HEX editor na světě a ani se o to nesnaží. Zato je k dispozici kdykoliv a kdekoliv – všude tam, kde máte svůj Vim. Vznikl jako hobby projekt před pár měsíci a dospěl do stavu, kdy by mohl být užitečný širší komunitě. Přepnout do HEX režimu se dá i uprostřed rozdělané práce: Soubor, který už máte otevřený běžným vim file.md, jedním příkazem přepnete do HEX editoru a dalším příkazem ho můžete vrátit zpět do textu. Kurzor přitom

    … více »
    Cohen | Komentářů: 1
    3.9. 01:55 | Nasazení Linuxu

    CERN dlouhodobě používal vlastní sestavení RHEL, ze kterého přešel na CentOS Stream. Federico Vaga a Nikos Tsipinakis ale nyní v přednášce na MiniDebConf Winterthur 2026 popisují plán probíhajícího přechodu na Debian pro řízení akcelerátorů. Důvodem k opuštění CentOS Stream jsou zachování zpětné kompatibility se starším hardwarem, kterou Red Hat narušuje, když tlačí sestavení balíčků pro novější verze architektury (x86-64), a nedostatečné nástroje pro sestavování vlastních balíčků a repozitářů.

    |🇵🇸 | Komentářů: 20
    3.9. 01:44 | Nová verze

    UZDoom (Wikipedie), tj. fork GZDoom, byl vydán ve verzi 5.0.0. Videopředstavení na YouTube. Podrobný přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 1
    2.9. 16:11 | Nová verze

    Příručka Linux From Scratch pro sestavení základního linuxového systému byla aktualizována v pravidelném půlročním termínu. Vydání 13.1 shrnuje přes 40 nových verzí balíčků a několik patchů. Navazující příručka Beyond Linux From Scratch s recepty pro sestavení dalších knihoven a aplikací zatím vydána nebyla, ačkoliv vývojová verze stále dostává aktualizace. Lze je číst online nebo stáhnout v HTML či PDF.

    |🇵🇸 | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (3%)
     (20%)
     (29%)
     (7%)
     (5%)
     (2%)
     (14%)
     (21%)
    Celkem 2570 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: 769×

    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.