• XSS.stack #1 – первый литературный журнал от юзеров форума

память потекла (зачем?)

sleepknot

HDD-drive
Пользователь
Регистрация
30.01.2022
Сообщения
43
Реакции
18
Крч в пьяном угаре,:smile10: щелкая еблом решил написать мразь которая будет в МОЙ ЛЮБИМЫЙ dwm bar высерать инфу.
Я конечно не Quake3, но вывести в консоль "Привет мир!" На Си как занехуй захуй могу.
И вот тут такая чешуя. Так как у меня ноут GTX 35 serail OG, мне пздц важно знать сколько моя малыха прослужит и служит ли она сейчас вообще, для этого нужно узнать сколько в дуре % заряда. По итогу написав код, который ничем не уступает коду человека который 2 дня учит Си. Я принялся тестить. И ебать вы бы знали мое удивление когда эта параша заработала, да мало того что эта дура выводит текст как макака в клетке, так это она нахуй еще память высикивает захуяли? Открыв всеми известный дебагер htop я обнаружил что слякать моя, за 3 минуты работы набрала в массе до 5мб, а начинала с 1.5. От такого расклада у меня кепка слетела, и я начал искать ошибку - нихуя я не нашел, скорее всего ошибка в ядре линукса и это очевидно. Один х#й хочу к вам обратится за помощью. с шансом в 0.3% вы не найдете в моем коде ошибки, но всеже !!!палю исходники!!!(GNU General Public License):​
C:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>

#define BAT1_DIR "/sys/class/power_supply/BAT1/capacity"
#define ADP1_DIR "/sys/class/power_supply/ADP1/online"


struct battery_data {
    FILE * fp;
    int BAT1, ADP1;
    char format_battery[16];
};

void battery_status(struct battery_data * battery) {
    battery->fp = fopen(BAT1_DIR, "r");
    fscanf(battery->fp, "%d", &battery->BAT1);

    battery->fp = fopen(ADP1_DIR, "r");
    fscanf(battery->fp, "%d", &battery->ADP1);

    snprintf(battery->format_battery, 16, battery->ADP1 == 0 ? "▼ %d%" : battery->ADP1 == 1 ? "▲ %d%" :  "%d%", battery->BAT1);

    fclose(battery->fp);
}


int main (int argc, char *argv[])
{
    struct battery_data battery;

    FILE * fp;
    char command[64];

    while (1) {
        battery_status(&battery);
        snprintf(command, 64, "xsetroot -name \"| %s |\"", battery.format_battery);

        fp = popen(command, "r");
        sleep(1);
        pclose(fp);
    }
    return 0;
}

А ну и вот, чуть не забыл, я решил на башке (так специалисты называют язык BASH) переписать прогу сишную мою крутую где 0 ошибок, и в итоге на башке все отлично воркало, и никуда нахуй даже намека небыло на просер памяти, башка воркала мин 10 и как жрала 1.5мб так и жрет 1.5мб:rolleyes:
А так всех с новым годом, найдите у меня в коде ошибку и я вам пришлю голову деда мороза на новый год!:smile66:

:smile10::smile10:
 
Пожалуйста, обратите внимание, что пользователь заблокирован
void battery_status(struct battery_data * battery) { battery->fp = fopen(BAT1_DIR, "r"); fscanf(battery->fp, "%d", &battery->BAT1); battery->fp = fopen(ADP1_DIR, "r"); fscanf(battery->fp, "%d", &battery->ADP1); snprintf(battery->format_battery, 16, battery->ADP1 == 0 ? "▼ %d%" : battery->ADP1 == 1 ? "▲ %d%" : "%d%", battery->BAT1); fclose(battery->fp); }
Тут хендл течет, открываешь два файла, закрываешь только один из них.
 
Тут хендл течет, открываешь два файла, закрываешь только один из них.
пздц оторвите мне две руки будучи мертвым.
!!!ВНИМАНИЕ!!!
Пользователь с ником DildoFagins (не ник, а сказка) получает себе в рождественскую ночь голову деда мороза!
Поздравляем старого пердуна Дилдофагинса!!!
Пиши сюда свой адрес, и я пришлю тебе твой подарок! :smile10:
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пиши сюда свой адрес, и я пришлю тебе твой подарок!
Г. Москва, Загородное шоссе, дом 2, отправляй курьером, скажи на проходной вручить лично дядюшке Дилдо Троловичу Фегинсу, они поймут))

Если ты про деньги/крипту, то, если желаешь, закинь копеечку admin'у в фонд помощи форуму, я и так богатый)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх