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 14:44 | IT novinky

    Apple bez varování odstranil ze svého obchodu sociální síť VKontaktě i další aplikace skupiny VK, jako je VK Music nebo VK Video [Novinky.cz].

    Ladislav Hagara | Komentářů: 4
    dnes 14:22 | IT novinky

    V dubnu loňského roku představený poštovní klient Notion Mail bude 22. září ukončen.

    Ladislav Hagara | Komentářů: 2
    dnes 04:33 | Komunita

    Konference OpenAlt 2026 hledá přednášející. Proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | IT novinky

    Společnosti OpenAI a Broadcom oznámily čip optimalizovaný pro AI pojmenovaný Jalapeño.

    Ladislav Hagara | Komentářů: 0
    včera 20:22 | Nová verze

    Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno v nové verzi 2.9. Hlavní novinkou je deno desktop pro převod Deno projektu na desktopovou aplikaci. Jedná se o alternativu k frameworkům Electron nebo Tauri.

    Ladislav Hagara | Komentářů: 2
    včera 15:44 | IT novinky

    Od zítra jsou Datové schránky oficiálně na nové adrese datovka.gov.cz. Adresa mojedatovaschranka.cz zůstává funkční do 27. srpna 2026, následně budou uživatelé automaticky přesměrováni na datovka.gov.cz.

    Ladislav Hagara | Komentářů: 3
    včera 13:44 | Nová verze

    Dolphin (Wikipedie), tj. open source multiplatformní emulátor herních konzolí GameCube a Wii od Nintenda, byl vydán ve verzi 2606. S podporou Game Boy Playeru.

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

    Vasudeva Kamath představil utilitu debvulns, alternativu k nativní utilitě debsecan, pro výpis zranitelností v Debianu. Navíc má především možnost výstupu ve strukturovaných formátech JSON a CSV. V plánu je exportér pro Prometheus.

    Ladislav Hagara | Komentářů: 0
    24.6. 21:44 | IT novinky

    Oficiální český státní eshop s elektronickými dálničními známkami nově najdete na edalnice.gov.cz. Doména gov.cz jasně potvrzuje, že jste na oficiálním státním webu [𝕏].

    Ladislav Hagara | Komentářů: 27
    24.6. 14:22 | Nová verze

    Byla vydána nová verze 4.8.0 interaktivního shellu fish (friendly interactive shell, Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 7
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (3%)
     (6%)
     (2%)
     (15%)
     (26%)
    Celkem 1995 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Jak zjistit cestu k device z device number?

    18.2.2010 21:07 kralyk z abclinuxu | skóre: 29 | blog:
    Jak zjistit cestu k device z device number?
    Přečteno: 397×
    Mám device number (buď holé v jednom čísle, nebo převedené do formátu major:minor, to je jedno), např 8:1 je u mně /dev/sda1 atd.

    Jaký je "správný" způsob, jak se z tohohle čísla dostat ke konkrétní block device v /dev?
    Koukal jsem např, že v /dev/block/ jsou odpovídají symlinky, ale dá se na tohle spolehnout, že to tak bude i na jiných linuxových strojích? Odpovídá to POSIXu?
    Nebo budu muset hledat v /dev a statem zjišťovat, který device odpovídá?

    "správným" způsobem mám na mysli způsob, který bude fungovat pokud možno všude pokud možno bez dependencí... ideálně POSIX conforming.

    Díky moc za každou pomoc

    Řešení dotazu:


    Odpovědi

    Fuky avatar 19.2.2010 00:36 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Jak zjistit cestu k device z device number?

    major/minor number to device path translate

    O /dev/block/ se stará udev, tak by to snad na Linuxových strojích s jádrem 2.6 neměl být problém.

    $ vim /etc/udev/rules.d/50-udev.rules
    SUBSYSTEM=="block",    SYMLINK+="block/%M:%m"
    

    Jestli se nepletu, tak v POSIX žádná zmíňka o /dev/block není IEEE Std 1003.1, 2004 Edition, ISO/IEC 9945.

    19.2.2010 01:16 Delaunay | skóre: 17 | blog:
    Rozbalit Rozbalit vše Re: Jak zjistit cestu k device z device number?
    Pochybuji že existuje nějaký "správný" způsob. Pokud se o tvorbu souborů zařízení na cílovém systému stará udev, tak bych zřejmě doporučil knihovnu libudev.
    19.2.2010 12:39 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Jak zjistit cestu k device z device number?
    Ok díky,
    vidím to tak, že použiju udev/libudev a jako fallback prolistování /devu statem.
    22.2.2010 11:58 Ivan
    Rozbalit Rozbalit vše Re: Jak zjistit cestu k device z device number?
    Zadny overeny zpusob bohuzel existovat nemuze, kernel jmena zarizeni nezna. pokud spustis "mknod /tmp/abc b 8 1" tak budes mit "sda1" klidne i v temp-u. Nejjstejsi reseni je opravdu ten find a stat.
    22.2.2010 18:16 kralyk z abclinuxu | skóre: 29 | blog:
    Rozbalit Rozbalit vše Re: Jak zjistit cestu k device z device number?
    Moje současné řešení vypadá takhle:
    
    string device_from_number(unsigned int major, unsigned int minor)
    {
      const string devdir = "/dev/";
      const string devblockdir = "/dev/block/";
      stringstream ss;
      string result = "";
    
      ss << major << ':' << minor << flush;
      if (file_exists(devblockdir))
      {
        if (!dir_empty(devblockdir))
        {
          if (file_exists(devblockdir+ss.str())) result = devblockdir+ss.str();
        } else goto fallback;
      } else
      {
        fallback:
        DIR* dir;
        dirent* ent;
        dir = opendir(devdir.c_str());
        if (dir)
        {
          while (ent = readdir(dir))
          {
            struct stat finfo;
            string fn = devdir + ent->d_name;
            if (!stat(fn.c_str(), &finfo))
            {
              if (S_ISBLK(finfo.st_mode) && (makedev(major, minor) == finfo.st_rdev))
              {
                result = fn;
                break;
              }
            }
          }
        } else
        {
          ohshiT(errno, ERR_OPENING_DIR, "Could not open directory: '"+devdir+"'");
        }
        closedir(dir);
      }
      return result;
    }
    
    (Toho makra dole si nevšímejte, tím vyhazuju exceptions)
    Pokud není device nalezen, je vrácen prázdný string.

    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.