Архив рубрики: C++

Шейпер трафика на cpp под FreeBSD

Вот нашел в своих старых файлах.  Пытался когда-то переписать шейпер с PHP на cpp, думал что выигрыш в скорости работы получу. Не получил ничего кроме усложнения 😉 Потому осталось в «столе» и в продакшен не пошло. Узкоспециализированная разработка, использовать которую вот так просто не получится. Выложил для «истории», чтоб не потерялась если что.. Читать далее Шейпер трафика на cpp под FreeBSD

Форк db2dhcp

Есть такой проект db2dhcp, автором к сожалению заброшенный, но выложенный с исходными кодами. Фактически это dhcp сервер, с возможностью выборки из БД MySQL или Postgree различных критериев для отдачи. Например: выдача определенному свичу, определенному порту определенного IP, В основном этот проект конечно интересен мелким провайдерам или крупным организациям.. Что не умеет делать этот проект? А не умеет писать в БД историю авторизации. Вот это я и поправил. Плюс добавил возможность сборки по FreeBSD 10. Скачать можно здесь: https://github.com/donpadlo/dhcp2db

 

 

Удаление пробелов из строки С++

Часто бывает необходимо при обработке  результата вывода выполнения консольных программ, убрать все пробелы из строки. Стандартного решения (ктоб сомневался!) в с++ нет. Пишем свой велосипет.

string trim(string ss){
 int i=0;
 string st=""; 
 while(i!=ss.length()-1){
   if(ss[i]!=' '){st+=ss[i];};
   i++;
 };    
 return st;
};

Возврат динамического массива из функции. C++

Задача: обьявить суперглобальный динамический массив, в который попадают значения из функции.

Решение:

struct tars{
    int tar_id;
    string tar_name;
    int fixshape;
    int used;
    int maxspeed;
    int onlytar;
};
tars *gtars;
tars *GetTarifsFromNoc(){
   tars *noctar=new tars[cnttar];
   noctar[counttar].fixshape=atoi(row[5]);
   noctar[counttar].onlytar=atoi(row[10]);
   return noctar;
};
int main(int argc, char** argv) {
   gtars=GetTarifsFromNoc();
   return 0;
}

Ошибка “Syntax error: Bad fd number” при вызове функции system c++

При вызове:

system("ipfw pipe list >& pipe.lst");

Вызывает возврат с ошибкой «Syntax error: Bad fd number»

Та же самая команда, выполненная на прямую в консоли, выполняется без ошибок. ОС FreeBSD. Необходимо записать в файл результат выполнения ipfw pipe list, включая stderr

Как костыль отлавливаю код возврата system. Но не хорошее решениие для меня, т.к. вижу код, но не вижу текста ошибки..