Название: diskfree? Отправлено: Igors от Октябрь 09, 2009, 19:51 Добрый вечер
Ищу как определить (на Linux) количество свободного места на диске. Известен путь, нужно получить drive/volume (тоже не знаю как) и вернуть свободный размер. Еще один вопрос: нормальный букварь по Linux? Ну например тот же diskfree - гуглю, все рассказывают про "df" но, как я понял, то команда а мне надо делать это их программы. Man pages есть, написано хорошо, понятно - но оглавлений нет и нужный вызов найти трудно. Спасибо Название: Re: diskfree? Отправлено: Rcus от Октябрь 09, 2009, 20:25 Есть один способ, у меня всегда работает чтение исходников.
Вот и сейчас man -k regexp ничего не дал, поэтому apt-get source coreutils, ставим dpkg-dev ибо в первый раз не получилось сверить контрольную сумму. Читаем читаем (читать там довольно мало надо - пару десятков строк) - понимаем чего не хватало. apt-get install manpages-posix-dev. man 3 statvfs. Название: Re: diskfree? Отправлено: Пантер от Октябрь 12, 2009, 11:53 Код
Название: Re: diskfree? Отправлено: kuzulis от Октябрь 12, 2009, 12:33 Цитировать Еще один вопрос: нормальный букварь по Linux? Ну например тот же diskfree - гуглю, все рассказывают про "df" но, как я понял, то команда а мне надо делать это их программы. Man pages есть, написано хорошо, понятно - но оглавлений нет и нужный вызов найти трудно. Я не могу понять.. Зачем это делать из программы, если есть df ?Эта утилита ставится по умолчанию во все дистрибутивы линукса в Core! (т.е. она есть ВСЕГДА!) Цитировать Известен путь, нужно получить drive/volume (тоже не знаю как) и вернуть свободный размер. В "новом ядре" Linux, для определения имени диска (а точнее соответствие имени диска в ОС - реальному диску :) ) , используются UUID т.е. при перезагрузке Linux , ядро производит скан ЖД и первый ответивший получает имя /dev/sda к примеру и т.п., т.е привязываться к именам устройств /dev/sda /dev/sdb /dev/hd и т.п. НЕЛЬЗЯ! Для привязки используются UUID устройств! Они никогда не меняются! Чтобы узнать UUID нужно жмакнуть в консоликоманду : Цитировать #blkid ЗЫ: если я в тему конечно.. ) Название: Re: diskfree? Отправлено: Igors от Октябрь 12, 2009, 17:46 Спасибо, разобрался со statvfs. правда, применить метод Rcus у меня пока не получилось - ничего, не все сразу.
У меня надо выводить для пользователя информацию сколько памяти и места на диске свободно и сколько занято программой. С самим Линуксом идет хорошо, многое как в OSX, а от командной строки я уклоняюсь как могу. Гораздо больше заморочек с IDE (Eclipse). Ну например, собрался я подключить libz.a, иду в Libraries(-l). Даю путь, даю имя libz.a - не находит. Даю libz - не находит. Ни хелпа, ни в гугле - ничего. Ну за 2 дня все-таки прорвался - нужно давать просто z :) Название: Re: diskfree? Отправлено: pastor от Октябрь 12, 2009, 17:59 все рассказывают про "df" но, как я понял, то команда а мне надо делать это их программы. Man pages есть, написано хорошо, понятно - но оглавлений нет и нужный вызов найти трудно. Ну и прекрасно, что команда. Вызови "df -kT" посредством QProcess и расспарси вывод. Получишь и общий объем, и сколько свободно и сколько занято. Название: Re: diskfree? Отправлено: Igors от Октябрь 12, 2009, 18:04 Ну и прекрасно, что команда. Вызови "df -kT" посредством QProcess и расспарси вывод. Получишь и общий объем, и сколько свободно и сколько занято. Я догадываюсь что на Линуксе это в кайф, но в конкретно этом модуле я не могу использовать даже new/delete не говоря уже о Qt.Название: Re: diskfree? Отправлено: Rcus от Октябрь 12, 2009, 18:12 Ненене :) Парсить вывод командных утилит это прерогатива скриптов. Нужные функции почти всегда представлены как интерфейсом командной строки для пользователя, так и разделяемыми библиотеками для программ. Начиная от обработки графики (libmagick/imagemagick) и заканчивая IPC (libdbus/qdbus)
|