Задать вопрос
  • Как правильно оформить cmake файл?

    @res2001
    Tynkute, У вас не правильно использованы имена переменных для подключения библиотеки, которые генерирует find_package. Нужно использовать: LIBSSH_LIBRARIES и LIBSSH_INCLUDE_DIRECTORIES.
    Это видно из вывода cmake - в текущем варианте переменная LIBSSH_INCLUDE_DIR пустая.

    Кстати, в main.c вы можете использовать #include без указания каталога.
  • Как правильно оформить cmake файл?

    @res2001
    Вывод сборки приведите.

    find_package сам умеет выдавать сообщение, о том что пакет не найден и завершать сборку. Этого можно добиться задав параметр REQUIRED.

    Вы можете вывести на экран переменные, которые сгенерировал find_package и убедиться, что там правильные значения:
    message(STATUS "LIBSSH_INCLUDE_DIR: ${LIBSSH_INCLUDE_DIR}")


    В cmake имена переменных регистрозависимые, а вы в одном случае используете libssh в другом LIBSSH - определитесь как-нибудь.
  • Вызов командной строки из консоли?

    @res2001
    Михаил Main, Общий принцип, если вам нужно управлять запущенной консолью (или другим приложением) - это перенаправить стандартные потоки ввода вывода (stdin, stdout, stderr) в каналы (pipe). Используя первые части каналов в своей программе вы можете отправлять cmd нужные команды на выполнение и получать вывод команд. Вторые части каналов будет использовать cmd.
    Соответственно, гуглите по перенаправлению ввода/вывода, а затем читайте микрософтовскую документацию. Кстати у микрософта есть уже готовые примеры на эту тему, когда-то натыкался.
  • Вызов командной строки из консоли?

    @res2001
    Михаил Main, В cmd нет команды end, соответственно она не закроется.
    Я имел ввиду, что, видимо в cmd вы захотите выполнить какую-то команду, затем, возможно вы захотите получить вывод этой команды в вашей программе и как-то обработать его или просто получить код возврата. Обычно для этих целей программно запускают cmd.
  • Вызов командной строки из консоли?

    @res2001
    Вызвать командную строку не проблема. Но что вы хотите делать с ней дальше? От ответа на этот вопрос зависит и вариант вызова командной строки.
    В варианте в ответе ниже через system() с cmd вы ничего не сможете сделать из программы, и ваша программа будет ждать пока не завершиться cmd.exe, как правило, требуется иное поведение.
  • Как кидать исключения при работе с try catch?

    @res2001
    Vladimir S, вы можете использовать std::ifstream.read(), для чтения сразу всего массива, а не читать его поэлементно. Видимо, именно на этом вы теряете скорость.
  • Задача на многопроцессорное программирование в c?

    @res2001
    Все таки многопоточность или форк?
    Форк - это многопроцессность - разные адресные пространства.
    Многопоточность это pthread_create() (и т.п.) в линукс - это одно адресное пространство.
    Проще в многопоточном варианте решать вашу задачу, а не в многопроцессном, т.к. результат вычислений в каждом потоке не нужно передавать управляющему потоку - он и так уже будет известен благодаря общей памяти.

    В целом алгоритм достаточно прост - разделяете ваш массив на N кусков (по количеству реальных ядер процессора), для каждого куска находите смещение начала и смещение конца (естественно надо найти для каждого куска первую открывающую скобку и последнюю закрывающую). Запускаете на каждый кусок свой поток, который будет работать в пределах выделенного диапазона.
    После того как все потоки завершаться вам останется только в основном потоке выбрать максимум из результатов вычислений.

    Для варианта с форком все примерно так же, только надо продумать как передать новому процессу его диапазон и как возвратить результат основному процессу.

    Удачи!
  • Как исправить ошибку при загрузке Windows?

    @res2001
    Вам нужно загрузиться с флэшки? Для чего?
    Если установить винду, то для изготовления загрузочной флэшки используйте родную микрософтовскую софтину (Media Creation Tool), она сама скачает правильный образ и зальет его на флэшку как надо.
    Если вам нужна загрузочная диагностическая флэшка - используйте проверенную сборку. Я использую adminpe.ru, ни разу не подводила. Инструкция по созданию загрузочной флэшки есть в комплекте.
  • С++. Написать функцию, которая возвращает количество элементов одного массива в другом. Как написать с помощью бинарного поиска?

    @res2001
    Saa005, То ли у вас код весь поехал, то ли еще что, но в таком виде вряд ли у вас код собирается.
    Спрячьте код под тег и верните отступы.
  • Почему в потоке иногда неправильно берется переменная?

    @res2001
    Евгений Якушов, На счет getx: тут два варианта, либо какой-то поток параллельно изменяет значение. Либо у вас плавает state. Если state.x не атомарная переменная, то функция в таком виде не потокобезопасна.
  • Почему HDD загружен на 100 %?

    @res2001
    Та же фигня стала с некоторых пор. Похоже мелкософт очередное обновление подогнал, которое просаживает дисковую загрузку. Пока не понятно, что с этим счастьем делать.
    Правда у меня после загрузки минут через 3-5 заканчивается эта канитель. Поэтому пока ничего толком не предпринимал.
  • Почему в потоке иногда неправильно берется переменная?

    @res2001
    Если отжирается память - значит есть утечки, т.е. не освобождаете что-то. Можно прогнать программу через valgrind или Intel VTune (Amplifier) - они умеют находить утечки.
    Про 50 - как писали ниже - getx не потокобезопасна.
    Гуглите про потокобезопасность, примитивы синхронизации, мьютексы, атомарные переменные...
  • Как скопировать название самого свежого файла через батник?

    @res2001
    Ключ /TA лишний, посмотрите справку по нему внимательней.
    Кроме того, в таком варианте вы берете самый последний файл, если файлов много, то операция может занять довольно много времени.
    Если сделать /O-D и выходить из цикла сразу после первого присваивания, то будет заметно быстрей.
  • Почему не подключается к личному серверу с openVPN?

    @res2001
    Аzad Kichibekov, Значит отдельного файла для openvpn нет, видимо лог openvpn в общем журнале (это нормальная ситуация): syslog обычно файл называется.
    Чтоб его долго не лопатить, сначала попытайтесь запустить openvpn, а потом смотрите журнал с конца.
    Запустить можно командой:
    sudo systemctl start openvpn
  • Почему не подключается к личному серверу с openVPN?

    @res2001
    Не очень удачный источник знаний вы себе выбрали - там бла-бла 98%, устал колесо на мыши крутить до того момента, когда уже начнет по теме писать.
    Из ошибки ясно, что openvpn у вас не стартовал, видимо ошибка.
    Текст ошибки ищите в логе, логи лежат в /var/log (возможно там есть файл openvpn.log или что-то типа того).
    Хорошо бы так же выложить конфиг сервера и конфиг клиента. Реальные IP адрес в клиентском конфиге можете заменить на произвольный адрес.

    Кроме конфига клиента, обычно должны быть файлы ключей клиента. Я не увидел в статье, что там идет речь про ключи клиента, там только конфиг фигурирует.
  • Сокет не может подключится к серверу?

    @res2001
    вместо этого укажите IP-адрес того интерфейса, на который должно приходить подключение с клиента.

    или адрес "0.0.0.0" (он же IF_ADDR_ANY) для того, что бы слушающий сокет слушал все сетевые интерфейсы.
  • Простенькая программа С++ работает неверно. Как исправить?

    @res2001
    Роман, В данной задаче, я думаю, что это вообще не будет проблемой, т.к. никаких вычислений с элементами массива не проводится после ввода. Но я бы, на всякий случай, изменил тип массива на int.
    Я эту тему затронул, чтоб Протопоп Метапоп знал, что есть такая проблема. Округление может помочь в простых случаях. Но часто бывает, что вы не знаете какого порядка числа в переменной, или нужно выжать максимально возможную точность и т.п. На тему сравнения чисел с плавающей точкой в инете много информации и обычно округление даже не предлагается как вариант решения проблемы.
  • Простенькая программа С++ работает неверно. Как исправить?

    @res2001
    Протопоп Метапоп, Не стоит сравнивать вот так в лоб числа с плавающей точкой никогда. Погуглите на эту тему и больше так не делайте. Хотя применительно к этой конкретной задаче это, возможно, и не является проблемой, (а может и является), но в других более сложных задачах это встанет в полный рост и будете потом гадать из-за чего программа не работает.
    Для вашей задачи просто замените тип массива на int. Ну и входные данные надо поменять.
    Поставьте break после str = false в том же ifе, т.к. дальше нет смысла продолжать сравнения.
  • Как установить clang на виндовс?

    @res2001
    В msys2, кроме mingw, есть clang, просто установите его из пакетов и используйте.