LINUX.ORG.RU

/proc/partitions - как понимать?


0

0

 $ cat partitions
major minor  #blocks  name

   8     0  117219767 sda
   8     1   26338536 sda1
   8     2   85763002 sda2
   8    16  195360984 sdb
   8    17    1052226 sdb1
   8    18   31358880 sdb2
   8    19     200812 sdb3
   8    20  162746482 sdb4
 $ stat partitions
  File: `partitions'
  Size: 0               Blocks: 0          IO Block: 1024   пустой обычный файл
Device: 3h/3d   Inode: 4026531852  Links: 1
Access: (0444/-r--r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2007-06-16 14:43:51.499464465 +0400
Modify: 2007-06-16 14:43:51.499464465 +0400
Change: 2007-06-16 14:43:51.499464465 +0400
 $ 

Файл пустой, но при этом в нем есть информация? Прочитать самописными программами его не удается. Кто-нибудь, разъясните.

Он не пустой, а занимает 0 байт на диске. Читайте про proc.
А читается он замечательно:

#!/usr/bin/perl
open (FD,"</proc/partitions") or exit;
@a = <FD>;
print $a[2];

Chumka ★★★
()
Ответ на: комментарий от Chumka

А почему же Qt'шный код не работает?

#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
        QApplication app(argc, argv);

        QFile file("/proc/partitions");
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
                return 1;

        QTextStream in(&file);
        while (!in.atEnd())
        {
                QString line = in.readLine();
                cout << endl << line.toAscii().data() << endl;
        }

        return app.exec();
}

non-ono
() автор топика
Ответ на: комментарий от non-ono

Прошу прощения что влезаю, я конечно не программист, но в принципе можно посмотреть исходники всяких KDEшных индикаторов, которые оттуда читают.

sin_a ★★★★★
()
Ответ на: комментарий от mv

#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
        QApplication app(argc, argv);

        QFile file("/proc/partitions");
        if (!file.open(QIODevice::ReadOnly ))
                return 1;

       /* QTextStream in(&file);
        while (!in.atEnd())
        {
                QString line = in.readLine();
                cout << endl << line.toAscii().data() << endl;
        }
*/
        cout << file.readAll().data();
        return app.exec();
}


krum
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.