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 01:22 | Nová verze

    Byla vydána nová verze 1.12.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
    včera 15:11 | Bezpečnostní upozornění

    V Redisu byla nalezena a v upstreamu již opravena kritická zranitelnost CVE-2025-49844 s CVSS 10.0 (RCE, vzdálené spouštění kódu).

    Ladislav Hagara | Komentářů: 3
    včera 14:00 | IT novinky

    Ministr a vicepremiér pro digitalizaci Marian Jurečka dnes oznámil, že přijme rezignaci ředitele Digitální a informační agentury Martina Mesršmída, a to k 23. říjnu 2025. Mesršmíd nabídl svou funkci během minulého víkendu, kdy se DIA potýkala s problémy eDokladů, které některým občanům znepříjemnily využití možnosti prokázat se digitální občankou u volebních komisí při volbách do Poslanecké sněmovny.

    Ladislav Hagara | Komentářů: 11
    včera 12:33 | Zajímavý software

    Společnost Meta představila OpenZL. Jedná se o open source framework pro kompresi dat s ohledem na jejich formát. Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 03:33 | IT novinky

    Google postupně zpřístupňuje českým uživatelům Režim AI (AI Mode), tj. nový režim vyhledávání založený na umělé inteligenci. Režim AI nabízí pokročilé uvažování, multimodalitu a možnost prozkoumat jakékoliv téma do hloubky pomocí dodatečných dotazů a užitečných odkazů na weby.

    Ladislav Hagara | Komentářů: 0
    7.10. 18:11 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.14.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 2
    7.10. 16:33 | IT novinky

    Bylo oznámeno, že Qualcomm kupuje Arduino. Současně byla představena nová deska Arduino UNO Q se dvěma čipy: MPU Qualcomm Dragonwing QRB2210, na kterém může běžet Linux, a MCU STM32U585 a vývojové prostředí Arduino App Lab.

    Ladislav Hagara | Komentářů: 3
    7.10. 15:55 | Nová verze

    Multiplatformní open source voxelový herní engine Luanti byl vydán ve verzi 5.14.0. Podrobný přehled novinek v changelogu. Původně se jedná o Minecraftem inspirovaný Minetest v říjnu loňského roku přejmenovaný na Luanti.

    Ladislav Hagara | Komentářů: 0
    7.10. 13:22 | Nová verze

    Byla vydána nová stabilní verze 6.10 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    6.10. 23:55 | Komunita

    Ubuntu 26.04 LTS bude (𝕏) Resolute Raccoon (rezolutní mýval).

    Ladislav Hagara | Komentářů: 5
    Jaké řešení používáte k vývoji / práci?
     (38%)
     (46%)
     (15%)
     (17%)
     (21%)
     (15%)
     (17%)
     (15%)
     (15%)
    Celkem 198 hlasů
     Komentářů: 13, poslední včera 07:41
    Rozcestník

    Dotaz: Jak najit cestu k cdrom device v C

    tomes.io avatar 10.2.2013 16:33 tomes.io | skóre: 12 | blog: tomesh
    Jak najit cestu k cdrom device v C
    Přečteno: 328×
    Ahoj,

    mam za ukol napsat jednoduchou verzi programu eject(1) tak, aby si byl program schopny zjistit cestu k zarizeni sam na jakemkoliv linuxu. Program nize umi otevrit cdromku jen kdyz se mu primo zada cesta na vstupu, jak to ale udelat automaticky? Jak v C vydolovat path k zarizeni?
    int main (int argc, char* argv[])
    {
      /* Open a file descriptor to the device specified on the command line.  */
      int fd = open (argv[1], O_RDONLY);
      /* Eject the CD-ROM.  */
      ioctl (fd, CDROMEJECT);
      /* Close the file descriptor.  */
      close (fd);
    
      return 0;
    }

    Řešení dotazu:


    Odpovědi

    tomes.io avatar 10.2.2013 16:55 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: Jak najit cestu k cdrom device v C
    Hm tak ono to staci primo napevno zadat /dev/cdrom, ioctl si pak poradi i se symlinkem. Myslel jsem, ze budu muset vystopovat z /dev/cdrom az primo ke skutecnemu zarizeni.
      int fd = open ("/dev/cdrom", O_RDONLY);
    10.2.2013 18:01 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Jak najit cestu k cdrom device v C
    Symbolické odkazy vyhodnocuje jádro, takže aplikace se o to starat nemusí.
    Jardík avatar 10.2.2013 21:11 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Jak najit cestu k cdrom device v C
    Jestli chvílu vydržíš, někde najdu kus BurnApp, co jsem kdysi psal.
    Věřím v jednoho Boha.
    Řešení 1× (frEon)
    Jardík avatar 10.2.2013 21:42 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Jak najit cestu k cdrom device v C
    Hmm, tak ty zdrojáky už asi nemám. Každopádně tu máš dokumentaci k api udevu. Postup je něco jako:
    struct udev *u = udev_new();
    struct udev_enumerate *ue = udev_enumerate_new(u);
    
    udev_enumerate_add_match_subsystem(ue, "block");
    
    // ..
    // tady možná přidat další filtry
    // ..
    
    udev_enumerate_scan_devices(ue);
    
    struct udev_list_entry* e = udev_enumerate_get_list_entry(ue);
    
    Pak třeba while cyklem projdeš přes jednotlivý vrácený zařízení, koukneš, jestli je tam property určující, že je to cdromka. Název si teď přesně nepamatuju, ale najdeš ho, když spustíš něco jako
    udevadm info --query=all --name=/dev/sr0
    
    Ještě koukni na attributy
    udevadm info --attribute-walk --name=/dev/sr0
    
    Z toho zjistíš, co má cdromka oproti třeba pevnýmu disku, apod. Možná třeba pak kouknout i na rodičovský zařízení, jestli je to na SCSI subsystému apod. Potom příkaz eject pošleš buď přímo přes ioctl k tomu určený (z hlavy si nepamatuju, možná něco jako CDROM_EJECT, do ví), nebo přes SG_IO ioctl s odpovídajícím CDB pro EJECT.
    Věřím v jednoho Boha.
    10.2.2013 23:09 Jardík
    Rozbalit Rozbalit vše Re: Jak najit cestu k cdrom device v C
    BTW pokud ti to má fungovat i na cdromce, kde není cédéčko, použij O_NONBLOCK pro open. Jelikož to chceš vysouvat, mohl bys použít i O_EXCL, kdyby náhodou zrovna něco vypalovalo a "je to hodné" a používá to taky O_EXCL (aneb linux a všechny nutné hacky pro exkluzivní přístup k cdromce, viz mé zápisy a možná diskuse o BurnApp), tak se ti to nepodaří otevřít (což je dobře, nechceš asi případné vypalování pojebat).

    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.