LINUX.ORG.RU

А есть ли какое то API ? Как получать системную информацию ?

 , ,


0

2

Ну вот на винде, есть C# с дотнетом, там довольно просто получить системную информацию, вроде списка процессов или загруженности процессора.

Но как в юниксах это сделать программно, а не набирая в консоле команду ? Без фреймворков.

Я пытался курить POSIX, но толковой информации не нашел, кроме убого курса на intuit

fopen(); fread(); fclose(); а большего и не нужно

mm3 ★★★
()

Пошастай по /proc, тебя ждёт много интересного. Я так самописный индикатор заряда батереи сделал для одного экзотического DE, где его не было.

Ну и во имя справедливости - и в винде программы получали системную информацию задолго до появления C#.

hobbit ★★★★★
()

в posix есть sysconf, остальное всё ос-специфично, в том числе и /proc

Reset ★★★★★
()

Но как в юниксах это сделать программно, а не набирая в консоле команду ?

Очевидно, если маны читать не хочется, можно взять исходники этой программы и выдрать нужный функционал.

Anon
()

C# с дотнетом

Которая опрашивает WinAPI, бгг

visual ★★★
()

У ядра-то устойчивого API нет, а тебе для какой-то шняги подавай.

anonymous
()
Ответ на: комментарий от hobbit

Пошастай по /proc, тебя ждёт много интересного

Пошастал, вот например хочу я получить среднию загрузку процессора (cat /proc/loadavg говорит гугл). А как мне на С++ это сделать ?

string lol = system («cat /proc/loadavg»); или нельзя так ?

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

string lol = system («cat /proc/loadavg»); или нельзя так ?

Экстравагантный способ чтения из файла, конечно, только вот работать он не будет: man 3 system.

Используй файловые потоки C++ (fstream) или файлы С. Ну или popen, если хочется хардкора.

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

Тоесть это файлы всётаки ? И для выдергивания информации, мне придется создавать файл, а потом его открывать, и каким то образом парсить ? Это же ппц, или я чего то не понимаю ? Есть ли способ сразу загнать _что_то в переменную ?

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

мне придется создавать файл, а потом его открывать, и каким то образом парсить ?

Файл уже существует, его нужно просто открыть. И да, затем парсить.

Есть ли способ сразу загнать _что_то в переменную ?

char buf[SIZE_EXCEEDING_THE_SIZE_OF_LOADAVG];
FILE *loadavg = fopen("/proc/loadavg", "r");
fread(buf, SIZE_EXCEEDING_THE_SIZE_OF_LOADAVG, loadavg);

Но проще сразу считывать нужную информацию с помощью fscanf.

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

Тоесть это файлы всётаки ? И для выдергивания информации, мне придется создавать файл, а потом его открывать, и каким то образом парсить ? Это же ппц, или я чего то не понимаю ?

Культурный шок? %) Да, ты много чего не понимаешь и задаешь невнятные вопросы.

Посмотри libprocps (к никому не нужной QNX это не относится).

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

Сейчас попробовал /proc/loadavg в QNX - нету его там, похоже действительно не универсальная штука. В коментах выше советовали sysconf, но он в qnx тоже не находится, даже при попытке просто в консоли написать

Zabroid
() автор топика

в QNX для этого используется qconn (винде такое и не снилось, вообще говоря); реализация клиента есть в Momentics. в наличии открытого API сомневаюсь

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

Я знал, что именно ты способен оценить эту шутку :)

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

Черт возьми, какая разница, как называть директорию - папкой или же собственно директорией? Илита хренова.

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