Partíciók helyfoglalása C programban

Kezdőlap Fórumok Programozás Partíciók helyfoglalása C programban

7 bejegyzés megtekintése - 1-7 / 7
  • Szerző
    Bejegyzés
  • #2160555
    zoltan22
    Felhasználó

      NAME
             statfs, fstatfs – get file system statistics

      SYNOPSIS
             #include     /* or */

             int statfs(const char *path, struct statfs *buf);
             int fstatfs(int fd, struct statfs *buf);

      😉
      A ‘df’ pedig ‘fstatfs64’-et hasznal.

      Mindezt ‘strace’-el deritettem ki 😀

      #2160556
      zoltan22
      Felhasználó

        NAME
               statfs, fstatfs – get file system statistics

        SYNOPSIS
               #include     /* or */

               int statfs(const char *path, struct statfs *buf);
               int fstatfs(int fd, struct statfs *buf);

        😉
        A ‘df’ pedig ‘fstatfs64’-et hasznal.

        Mindezt ‘strace’-el deritettem ki 😀

        #2160557
        uzsolt
        Felhasználó

          Ez idáig nekem is megvan. Akkor már csak egy kérdésem van: hogyan használjam?

          Code:
          #include
          #include

          int main () {
                  struct statfs *buf;

                  statfs(„/dev/hda3”,buf);
                  printf(„Total: %ld, free: %ld, avail: %ldn”,buf->f_blocks,buf->f_bfree,buf->f_bavail);
                  return 0;
          }

          A futtatás után:

          Code:
          $ ./a.out
          Total: 315, free: 720914, avail: 18550

          Ha átírom a „/dev/hda3”-at „/dev/hda2”-re, ugyanez az eredmény (mármint minden szám ugyanez).
          Nos?

          Szerk.: bocs, valami gikszer van, a visszatérési érték -1.

          #2160558
          uzsolt
          Felhasználó

            Ez idáig nekem is megvan. Akkor már csak egy kérdésem van: hogyan használjam?

            Code:
            #include
            #include

            int main () {
                    struct statfs *buf;

                    statfs(„/dev/hda3”,buf);
                    printf(„Total: %ld, free: %ld, avail: %ldn”,buf->f_blocks,buf->f_bfree,buf->f_bavail);
                    return 0;
            }

            A futtatás után:

            Code:
            $ ./a.out
            Total: 315, free: 720914, avail: 18550

            Ha átírom a „/dev/hda3”-at „/dev/hda2”-re, ugyanez az eredmény (mármint minden szám ugyanez).
            Nos?

            Szerk.: bocs, valami gikszer van, a visszatérési érték -1.

            #2160559
            uzsolt
            Felhasználó

              Na, jó, hülye vagyok (vagy legalábbis egy kezdő c-s). Egy helyes kód:

              Code:
              #include
              #include
              #include

              int main () {
                      struct statfs buf;

                      printf(„%dn”,statfs(„/pub”,&buf));
                      printf(„%sn”,strerror(errno));
                      printf(„Total: %ld, free: %ld, avail: %ldn”,buf.f_blocks,buf.f_bfree,buf.f_bavail);
                      return 0;
              }

              A /pub egy könyvtár, ami a /-en van. Ha még a visszatérési értékeket beszorzod néggyel, megkapod kilobájtokban az infót.

              #2160560
              uzsolt
              Felhasználó

                Na, jó, hülye vagyok (vagy legalábbis egy kezdő c-s). Egy helyes kód:

                Code:
                #include
                #include
                #include

                int main () {
                        struct statfs buf;

                        printf(„%dn”,statfs(„/pub”,&buf));
                        printf(„%sn”,strerror(errno));
                        printf(„Total: %ld, free: %ld, avail: %ldn”,buf.f_blocks,buf.f_bfree,buf.f_bavail);
                        return 0;
                }

                A /pub egy könyvtár, ami a /-en van. Ha még a visszatérési értékeket beszorzod néggyel, megkapod kilobájtokban az infót.

                #1888124
                csaba
                Felhasználó

                  Üdv!

                  Szóval a kérdésem rövid, velős, tömör: hogyan lehetne a legfájdalommentesebb módon lekérdezni a partíciók „állapotát” c programban? Szóval valami olyasmi kellene, mint a df. Bűvölöm én a forráskódját, de (még) kicsi vagyok még hozzá. Keresgéltem a /proc ill. a /sys könyvtárakban, sőt még a gugliban is, de nem jutottam előrébb.
                  Persze lehetőleg a df meghívása nélkül kellene megoldani 😉

                7 bejegyzés megtekintése - 1-7 / 7
                • Be kell jelentkezni a hozzászóláshoz.