newvasyuki, Я уже 5 лет не в теме, так что ничего кроме своего устаревшего мнения вам дать не могу.
Несовместимость проявлялась в том, что файл зашифрованный в одной криптосистеме невозможно расшифровать в другой. В чем конкретно там была не совместимость я не в курсе.
Читал об этом на сайте криптопро, там же писали, что они что-то делают для улучшения совместимости, но тогда они пытались подружится с продуктами какой-то другой компании (уже не скажу какой именно), а что с остальными - не известно.
MaksSmag, Просто настройте и работайте, в инете полно инструкций. У меня лет 10 работал почтовик на виртуалке, правда не exim, но это рояли не играет. Думаю, что и сейчас он успешно работает, но уже не у меня :) Наверное я что-то делал не так.
Если хотите, чтоб вам кто-то другой настроил - ищите фрилансера за деньги.
Если по ходу возникнут какие-то вопросы то можете писать сюда.
Если у вас нет домена - купите его. Но это вообще не имеет отношения к тому где у вас размещается почтовик.
Читайте маны по системным вызовам и принимайте решение, что вы будете делать с ошибками.
Обычно есть 3 вида реакции на ошибки:
1.выдать сообщение и завершиться
2.повторить операцию (EINTR, EAGAIN), возможно не сразу
3.игнорировать (редкий случай, например когда выставляете слушающему сокету опцию SO_REUSEADDR)
EINTR - эта ошибка возвращается, когда во время системного вызова приложению приходит сигнал. Реакция зависит от того, как вы обрабатываете сигналы - если перехватываете для корректного освобождения ресурсов или еще для чего-нибудь, то есть смысл просто повторить операцию.
EIO - низкоуровневая ошибка. Обычно требуется вмешательство человека.
В общем подходите к обработке ошибок осознано, в зависимости от того, какое поведение требуется в данном конкретном случае. Каких-то единых рекомендаций тут быть не может.
Tynkute, У вас не правильно использованы имена переменных для подключения библиотеки, которые генерирует find_package. Нужно использовать: LIBSSH_LIBRARIES и LIBSSH_INCLUDE_DIRECTORIES.
Это видно из вывода cmake - в текущем варианте переменная LIBSSH_INCLUDE_DIR пустая.
Кстати, в main.c вы можете использовать #include без указания каталога.
Михаил Main, Общий принцип, если вам нужно управлять запущенной консолью (или другим приложением) - это перенаправить стандартные потоки ввода вывода (stdin, stdout, stderr) в каналы (pipe). Используя первые части каналов в своей программе вы можете отправлять cmd нужные команды на выполнение и получать вывод команд. Вторые части каналов будет использовать cmd.
Соответственно, гуглите по перенаправлению ввода/вывода, а затем читайте микрософтовскую документацию. Кстати у микрософта есть уже готовые примеры на эту тему, когда-то натыкался.
Михаил Main, В cmd нет команды end, соответственно она не закроется.
Я имел ввиду, что, видимо в cmd вы захотите выполнить какую-то команду, затем, возможно вы захотите получить вывод этой команды в вашей программе и как-то обработать его или просто получить код возврата. Обычно для этих целей программно запускают cmd.
Вызвать командную строку не проблема. Но что вы хотите делать с ней дальше? От ответа на этот вопрос зависит и вариант вызова командной строки.
В варианте в ответе ниже через system() с cmd вы ничего не сможете сделать из программы, и ваша программа будет ждать пока не завершиться cmd.exe, как правило, требуется иное поведение.
Vladimir S, вы можете использовать std::ifstream.read(), для чтения сразу всего массива, а не читать его поэлементно. Видимо, именно на этом вы теряете скорость.
Все таки многопоточность или форк?
Форк - это многопроцессность - разные адресные пространства.
Многопоточность это pthread_create() (и т.п.) в линукс - это одно адресное пространство.
Проще в многопоточном варианте решать вашу задачу, а не в многопроцессном, т.к. результат вычислений в каждом потоке не нужно передавать управляющему потоку - он и так уже будет известен благодаря общей памяти.
В целом алгоритм достаточно прост - разделяете ваш массив на N кусков (по количеству реальных ядер процессора), для каждого куска находите смещение начала и смещение конца (естественно надо найти для каждого куска первую открывающую скобку и последнюю закрывающую). Запускаете на каждый кусок свой поток, который будет работать в пределах выделенного диапазона.
После того как все потоки завершаться вам останется только в основном потоке выбрать максимум из результатов вычислений.
Для варианта с форком все примерно так же, только надо продумать как передать новому процессу его диапазон и как возвратить результат основному процессу.
Вам нужно загрузиться с флэшки? Для чего?
Если установить винду, то для изготовления загрузочной флэшки используйте родную микрософтовскую софтину (Media Creation Tool), она сама скачает правильный образ и зальет его на флэшку как надо.
Если вам нужна загрузочная диагностическая флэшка - используйте проверенную сборку. Я использую adminpe.ru, ни разу не подводила. Инструкция по созданию загрузочной флэшки есть в комплекте.
Евгений Якушов, На счет getx: тут два варианта, либо какой-то поток параллельно изменяет значение. Либо у вас плавает state. Если state.x не атомарная переменная, то функция в таком виде не потокобезопасна.
Та же фигня стала с некоторых пор. Похоже мелкософт очередное обновление подогнал, которое просаживает дисковую загрузку. Пока не понятно, что с этим счастьем делать.
Правда у меня после загрузки минут через 3-5 заканчивается эта канитель. Поэтому пока ничего толком не предпринимал.
Если отжирается память - значит есть утечки, т.е. не освобождаете что-то. Можно прогнать программу через valgrind или Intel VTune (Amplifier) - они умеют находить утечки.
Про 50 - как писали ниже - getx не потокобезопасна.
Гуглите про потокобезопасность, примитивы синхронизации, мьютексы, атомарные переменные...
Ключ /TA лишний, посмотрите справку по нему внимательней.
Кроме того, в таком варианте вы берете самый последний файл, если файлов много, то операция может занять довольно много времени.
Если сделать /O-D и выходить из цикла сразу после первого присваивания, то будет заметно быстрей.
Аzad Kichibekov, Значит отдельного файла для openvpn нет, видимо лог openvpn в общем журнале (это нормальная ситуация): syslog обычно файл называется.
Чтоб его долго не лопатить, сначала попытайтесь запустить openvpn, а потом смотрите журнал с конца.
Запустить можно командой: sudo systemctl start openvpn
Не очень удачный источник знаний вы себе выбрали - там бла-бла 98%, устал колесо на мыши крутить до того момента, когда уже начнет по теме писать.
Из ошибки ясно, что openvpn у вас не стартовал, видимо ошибка.
Текст ошибки ищите в логе, логи лежат в /var/log (возможно там есть файл openvpn.log или что-то типа того).
Хорошо бы так же выложить конфиг сервера и конфиг клиента. Реальные IP адрес в клиентском конфиге можете заменить на произвольный адрес.
Кроме конфига клиента, обычно должны быть файлы ключей клиента. Я не увидел в статье, что там идет речь про ключи клиента, там только конфиг фигурирует.
Несовместимость проявлялась в том, что файл зашифрованный в одной криптосистеме невозможно расшифровать в другой. В чем конкретно там была не совместимость я не в курсе.
Читал об этом на сайте криптопро, там же писали, что они что-то делают для улучшения совместимости, но тогда они пытались подружится с продуктами какой-то другой компании (уже не скажу какой именно), а что с остальными - не известно.