Проверка работы sendmail
Как проверить работу sendmail и как настроить, если не работает?
Как проверить работу sendmail и как настроить, если не работает?
Есть класс:
class MessageThread {
public:
thread *thr;
vector<Message> messages;
};
Внутри функции void ThreadPool::add() вызываю
MessageThread mthr;
Message message;
message.msg = msg;
mthr.messages.push_back(message);
MessageThread mthr;
mthr.thr = new thread(&ThreadPool::func, this, std::ref(mthr));
Теперь в функции
void ThreadPool::func(MessageThread &mthr) {
auto it = mthr.messages.begin();
Message message = *it;
cout << "message = " << message.msg << endl;
}
где Message, это такой вот класс:
class Message {
public:
...
string msg;
...
};
Так вот, часть строчки куда-то пропадает. Что это может быть такое?
Под windows я отлавливал событие FD_CONNECT. Здесь такого, почему то, не нашёл. Как всё-таки поймать epoll connect?
У меня такая структура проекта:
projects/prj1/src
projects/prj2/src
Когда я компилирую проект prj2 и все исходники лежат тут projects/prj2/src - всё работает... Но если я хочу подцепить исходники из projects/prj1/src, то возникает ошибка.
Почему так происходит?
Создаю в Qt Creator, но думаю, что проблема не в нём...
Создаю статическую библиотеку lib1 в Qt без использования QtCore. Проект получается, по-умолчанию, содержащий файлы lib1.cpp и lib1.h, в которых описан пустой класс Lib1 (только пустой конструктор).
Создаю тестовое приложение «Проект без Qt», которое так и называется test, подключаю к нему эту либу - всё работает.
Теперь создаю также как и lib1 статическую библиотеку lib2.
lib2.cpp:
#include «lib1.h» #include «lib2.h»
Lib2::Lib2() { Lib1 *lib1 = new Lib1(); }
Компилирую библиотеку Lib2 - пока всё работает как надо.
Вставляю в своё приложение строчку:
Lib2 *lib2 = new Lib2();
И тут появляется странная ошибка:
Undefined reference to Lib1::Lib1() в файле lib2.cpp
Что за странная ошибка? Что я делаю не так?
Форкаю процесс, в нём запускаю с помощью execl другую программу. Делаю это в цикле:
pid_t pid = fork();
if (pid == 0) {
while(1) {
execl(...);
}
}
Казалось бы после завершения выполнения execl() цикл должен заново запустить execl(), но не тут то было. Просто завершается форкнутый процесс. Если выполняю через system(), то всё работает нормально, но нужно через execl().
Почему так происходит?
В Windows я просто выставляю опцию и ловлю, если ли такое же в Linux? Пишу на C++.
На моём VPS процесс sendmail-mta занимает 3-5% процессорного времени? Возможно, взломали мой сайт... Какие действия предпринять? Как бороться с этим?
Как вы относитесь к разработке сайтов на C++? Какие плюсы, минусы?
Когда-то давно ставил - всё работало, но сейчас не получается...
Пробую, что насоветовал гугл... установил... mysql.h нашёл, а вот саму либу не устанавливает...
У меня apache стоит на порту 80. Хочу поменять, например, на 8080...
Менял здесь /etc/apache2/ports.conf не помогает. После перезапуска apache порт восстанавливается на 80. В других местах менял - тоже самое...
Подскажите верный вариант?
Пишу на Bootstrap. Хочу на нём получить мобильное приложение. Можно, вроде как, это сделать с помощью Phonegap. Однако, на старых телефонах тормозит.
И тут мне подсказывают, что можно использовать NativeScript (хотя тоже ограничение - «You can develop for Android 4.2 or later and iOS 7.1 or later»). Будет ли с ним работать Bootstrap?
Написал демон на C++ под линукс. Обращаюсь к нему из браузера Android, указывая в адресной строке site.ru/file.typ. Если я указываю (вместо typ) расширение jpg - то файл качается без проблем, а если, например, apk - то выдаёт ошибку EPIPE.
Как я понимаю, если расширение файла, стандартное для веба, то нет проблем, а если другое, то EPIPE неизбежно.
Как решить проблему?
Настраиваю неблокирующие сокеты... Читаю/отправляю небольшие посылки... А вот когда дело касается больших пакетов, то, как я понимаю, нужно использовать epoll. Не подскажите простенькие примеры чтения и записи с помощью epoll на с/с++?
Если отправляю на обычный компьютер, то норм, а если на Android - то вылетает...
bool Socket::sendAll(void *buffer, int size) { if (!isValid()) return 0; char *ptr = (char*) buffer;
int counter = 0; while (size > 0) { int sz = ::send(m_sock, ptr, size, 0); usleep(1000); if (sz < 1) { counter++; if (counter > 10000) return false; continue; } ptr += sz; size -= sz; }
return true; }
Для работы с файлами использую fopen для открытия файла. Тут вдруг понадобилось одновременно открыть файл нескольким потокам для чтения.
Как открыть файл в таком режиме используя fopen? Или использовать что-то другое?
Как прекратить выполнение хранимой процедуры ORACLE, используя OCCI?
Как в С++11 узнать состояние потока, то есть работает или нет такой-то поток?
Перерыл интернет - не помогло. Не подскажет кто-нибудь правильный способ?
Всё очень плохо - сломал libc.so.6, теперь даже команда ls не работает... Это как-нибудь лечиться?
следующие → |