Swank, про avg() ты похоже не догнал о чем я спрашивал
Koenig, Не, незнаю я этой функции
Swank, среднее арифметическое значение считает, просто смотрю в коде с + с1 /2
Koenig, Мне оптимальнее юзать с + с1 /2 чем avg
Да и еще подключать заголовочный файл в котором эта функция
Так быстрее, знаю что это даже не спички но я привык все так делать
Вот если кому интересно простой пример мониторинга чтоли
#include <stdio.h>
#include <unistd.h>
char cpuUsage();
int memTotal();
int memFree();
int main() {
while(1) {
printf("CPU: %d%%\nMEM: %d/%d\n", cpuUsage(), memTotal(), memFree());
fflush(stdout);
sleep(1);
}
return 0;
}
char cpuUsage() {
char load = 0;
unsigned long total, c, n, s, i = 0;
unsigned long c1, n1, s1, i1 = 0;
FILE *f = fopen("/proc/stat", "r");
if (fscanf(f, "cpu %lu %lu %lu %lu", &c, &n, &s, &i) < 4) {
fclose(f);
return -1;
}
fclose(f);
sleep(1);
f = fopen("/proc/stat", "r");
if (fscanf(f, "cpu %lu %lu %lu %lu", &c1, &n1, &s1, &i1) < 4) {
fclose(f);
return -1;
}
fclose(f);
c = c1-c;
n = n1 -n;
s = s1 -s;
i = i1 - i;
total = c + n + s + i;
load = 100.0 * ((c + n + s)/(double)total);
return load;
}
int memTotal() {
unsigned long memtotal;
FILE *fp;
fp = fopen("/proc/meminfo", "r");
if (!fp)
return -1;
if(fscanf(fp, "MemTotal:%lu kB\n", &memtotal) != 1) {
fclose(fp);
return -1;
}
fclose(fp);
return memtotal / 1024;
}
int memFree() {
int memFree;
int ignore;
FILE *fp;
fp = fopen("/proc/meminfo", "r");
if (!fp)
return -1;
if(fscanf(fp, "MemTotal:%llu kB\n", &ignore) != 1) {
fclose(fp);
return -1;
}
if(fscanf(fp, "MemFree:%lu kB\n", &memFree) != 1) {
fclose(fp);
return -1;
}
fclose(fp);
return memFree / 1024;
}
Скомпилить можно так:
gcc file.c
Запустить:
chmod +x a.out
./a.out
Можно прописать условие на отправку письма на емаил, если cpuUsage()> 95% or mrmFree() <(memTotal /8)
Отправляем письмо "[server]highload, help me pls"
https://m.habrahabr.ru/post/307706/ Поржал.
А вообще это не смешно, надо руки отрубывать за такое, ноги тоже, да и все что торчит.
# Swank (16.08.2016 / 06:01)
https://m.habrahabr.ru/post/307706/ Поржал.
А вообще это не смешно, надо руки отрубывать за такое, ноги тоже, да и все что торчит.
Развлекаеца человек, а такото из разряда - коту делать нечего...
клоун, Не в том дело, знать как работает компилятор полезно но его первое же утверждение "вы можете изменить порядок аргументов функции в C", в корне не верно, в Си нельзя изменить порядок аргументов, тут используется неопределенное поведение компилятора.
Работать оно может будет "правильно" только в том солучае если инт и дабл будут передаватся через разные стеки(инт через основной, а дабл через стек fpu), также от согласования вызовов ещё зависит, например если у функции согласование fastcall и регистр способен вместить дабл то будет через регистры передаватся.
# Swank (18.08.2016 / 00:23)
клоун, Не в том дело, знать как работает компилятор полезно но его первое же утверждение "вы можете изменить порядок аргументов функции в C", в корне не верно, в Си нельзя изменить порядок аргументов
Ну я примерно это и имел ввиду, и то что дятел не понимает что приведение указателя на одну функцию, к указателю на другую не влияет на аргументы и их передачу, как бы очевидно