Задать вопрос
  • Как запустить скрипт cmd на КД?

    @res2001
    Помимо прав, отличие от ручного запуска заключается в том, что текущий каталог для батника будет другим.
    По моему это c:\windows\system32 если правильно помню.
    Если в батнике используются относительные пути, то он может не работать из-за этого.

    Батник достаточно легко отлаживать - добавьте отладочного вывода в ключевых точках с перенаправлением в файл. Файл куда перенаправляете отладочный вывод указывайте полным путем (не относительным), иначе либо не сработает из-за отсутствия прав либо будете искать где этот файл создался.

    Вообще для батников, запускаемых через планировщик полезно перенаправлять вывод всех операций в файл, т.к. консоли вы не увидите никогда, а знать что там происходит иногда бывает полезно. Особенно когда случаются какие-то сбои/ошибки.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames, Думаю в std вряд ли появятся стредства IPC, т.к. любой язык программирования обычно оперирует в терминах одного приложения, а тут IPC нет в принципе.
    Вон даже сокеты не завезли в std, хотя казалось бы - API давно устоялся и примерно похож на разных платформах и есть куча кроссплатформенных реализаций.
    Удивительно, что файлы есть :) но тут уж, видимо, отказаться было нельзя - программисты не поймут.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames,
    например, когда два приложения пишут в один файл или в одну консоль

    Тут напрашивается промежуточное приложение, которое будет единолично писать в файл/консоль, а ваши приложения будут скидывать информацию для записи ему.
    Например по такому принципу работает логирование в линуксе - через демон rsyslog или что-то еще зависит от дистрибутива. Скидывать информацию демону можно через те же сокеты или пайпы или еще как-то.
    В варианте с записью в файл можно поиграть с блокировкой областей файла перед записью, не уверен, что получится, но попробовать можно. В линуксе такой функционал есть, есть ли в винде - не знаю. Но это тоже работа с API ОС.

    Можно самому озаботится написанием кроссплатформенных оберток над нужным вам функционалом. Например разделяемая память, именованные каналы или какие-нибудь семафоры - можно довольно легко завернуть в кроссплатформенный API.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames, атомикам вообще пофигу на процессы и потоки, они работают на уровне физических ядер процессора и им наплевать код какого процесса/потока выполняется в данный момент на разных ядрах. Главное, чтоб в обоих процессах было обращение к одному и тому же атомику, поэтому он должен быть в разделяемой памяти.
    А барьерам памяти так и вовсе ничего нигде хранить не надо - это просто ассемблерная инструкция, заставляющая текущее ядро процессора синхронизировать свой кэш с другими ядрами.

    Да, разделяемой памяти в std нет.
    Написано
  • Как синхронизировать процессы используя только std?

    @res2001
    maaGames,
    Не большой знаток Линуксов, там поток и процесс равнозначны в плане работы std::mutex?

    Нет, мьютексы в рамках потока работают и реализованы они в pthread, что как бы намекает на потоки.
    Хотя в линуксе поток от процесса по сути отличается только тем, что в процессе изолированное адресное пространство.
    Теоретически можно было бы положить мьютекс куда-нибудь в разделяемую память, но он все равно не будет работать в разных процессах, т.к. там внутри указатели.
    В общем требуются специализированные средства синхронизации между процессами, заточенные под это.

    Кстати, атомики и барьеры есть в std. Можно положить в разделяемую память атомик. Можно так реализовать простенькую блокировку. Правда на атомике нельзя будет пассивно подождать освобождения ресурса, только активное ожидание - спинлок.
    Написано
  • Почему портированная софтина перестала запускаться требуя NTFS раздел?

    @res2001
    Попробуйте отследить что проверяет софтина, перед тем как выдает это сообщение.
    Проверять она может реестр, файловую систему, переменные окружения, запрос в интернет.
    Средства для мониторинга обращений к реестру или файловой системе есть в составе SysinternalsSuite
    Можно сравнить логи обращений к реестру и файловой системе с компом, на котором софтина работает.
    Переменные окружения - сравните с компом где софтина работает нормально.

    Если софтина лезет в интернет - это можно увидеть сниффером. Так же сравнить запросы с работающим вариантом.

    Возможны и другие варианты проверок, например софтина пытается прочитать лицензионный ключ с какого-нибудь носителя. Но тут уже ничего сказать нельзя без большей конкретики.
    Написано
  • Не удаётся продолжить выполнение кода, поскольку система не обнаружила sfml-graphics-d-3.dll. Как исправить ошибку?

    @res2001
    В винде dll библиотеки, используемые программой, должны лежать в том же каталоге, где исполняемый файл, либо по одному из путей, указанных в переменной окружения PATH.
    Написано
  • Почему в c++ еще нету Null-Conditional Operator?

    @res2001
    Dyikot,
    Но это же можно использывать по ситуации.

    Писалось же выше, что в большинстве случаев обработкой в одну строку не обойтись и должна быть реакция как на ==NULL так и на !=NULL.
    Так что чаще всего ситуации, где предложенный вами оператор пригодился бы в С/С++, не случится вовсе. Поэтому его до сих пор в языке и нет.
    Написано
  • Почему в c++ еще нету Null-Conditional Operator?

    @res2001
    Для указателей, которые не могут быть NULL есть ссылки.
    Обычно, когда указатель NULL, то должно быть то же какое-то альтернативное действие - выдать ошибку или еще что-то, так что таким простым вариантом обычно не обходится.
    Кроме того, то что вы предлагаете не трудно сделать на шаблонах или макросах. Выглядеть это будет не так, само собой, но эффект тот же.
    Написано
  • Непонятная ситуация с терминалами, нормально ли это?

    @res2001
    Regven, Вместо каспера, как правило хватает стандартного Windows Defenderа, который есть из коробки.
    Не совсем понятно, почему винда захотела "создать новый рабочий стол" да еще и лагать начала.
    Ну сам по себе новый рабочий стол - это ничего криминального.

    А вот лаги, да самопоявляющиеся окна CMD - это подозрительно.
    Я бы проверил через менеджер задач процессы с подозрительной активностью, так же не повредило бы и проверить на вирусы, но не из винды, а используя загрузочную флешку с антивирусом.
    У каспера того же по моему есть или был такой готовый комплект, так же и у Dr.Webа имелся. Но я уже давно не пользовался, так что даже названия с ходу не скажу.
    Написано
  • Как подключить SDL к проекту C++?

    @res2001
    Gromer-Top,
    c++ не для меня

    Что-то быстро сдался :-)
    Написано
  • Как подключить SDL к проекту C++?

    @res2001
    Gromer-Top,
    как собрать в cMake всё так, чтобы на компьютерах без всего этого, мой проект работал?

    Без чего?
    Видимо вы хотите, чтоб скинул на другой компьютер 1 исполняемый файл и он там начал работать без танцев с бубном.
    Этого можно добиться, используя статическую компоновку (и статические библиотеки). К cmake это не особо имеет отношение - это к компилятору относится. Так же с помощью опций компилятора задается использование статических библиотек.
    В варианте по умолчанию используется динамическая компоновка, соответственно все используемые библиотеки должны находиться в своих dll файлах. Чтоб запустить такой исполняемый файл, надо собрать все используемые библиотеки в каталог где лежит этот exe.
    Написано
  • Как подключить SDL к проекту C++?

    @res2001
    Gromer-Top, Я бы не копировал ничего в каталоги mingw. Для сборки это совсем не обязательно.
    Например вы имеете такое дерево каталогов для SDL3:
    c:\sdl3\include;
    c:\sdl3\lib
    Тогда вам надо добавить в конфиг vscode следующее:
    "-Ic:\sdl3\include" и "-Lc:\sdl3\lib"
    это помимо тех флагов, которые вы уже добавили.
    В этом случае компилятор найдет библиотеки и заголовочники SDL3 в указанных каталогах.

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

    У голого mingw нет своего пакетного менеджера. Я обычно использую связку msys2+mingw. Msys2 - это bash оболочка со встроенным пакетным менеджером pacman и комплектом стандартных linux утилит командной строки.

    Если библиотеки нет в пакетном менеджере, то собираю ее вручную или использую готовую сборку от разраба и подключаю ее к своему проекту.

    Не знаю есть ли SDL в репах msys2. Кстати, в msys2 есть не только mingw, но clang.
    Написано
  • Как подключить SDL к проекту C++?

    @res2001
    Gromer-Top, Для сборки cmake проектов в vscode используют плагины CMake и CMake Tools (оба вместе).
    Далее создается файл cmakelists.txt где описывается ваш проект.
    Используемые библиотеки можно добавить к своей цели с помощью, например, target_link_libraries и т.п.
    https://cmake.org/cmake/help/v3.27/guide/tutorial/...
    На гитхабе полно cmake проектов, можете там посмотреть примеры cmakelists.txt

    Ваш вариант это не решение для cmake, он годится для очень маленьких проектов, состоящих из 1 файла исходного кода. Более сложные проекты всегда собирают с помощью той или иной системы сборки (cmake или что-то другое). Если вы не используете cmake, то уберите тег из вопроса.
    Написано
  • Надежный VPN клиент в виде либы?

    @res2001
    Xavisonell, Не тыкну. Тут будет многое зависеть от того как вы будете это настраивать. В итоге вам надо получить автоматическую настройку у клиента в каком-либо виде. Начните с ручной настройки, когда процесс освоите, решите для себя как конкретно будете реализовывать разворачивание ВПН у клиентов.

    Сам я достаточно много использовал раньше OpenVPN. Он все это умеет - работать как сервис без GUI на винде и в линуксе. Имя сервиса может быть изменено стандартными системными средствами при установке сервиса или потом. Тип запуска сервиса - это то же относится к общесистемному администрированию и зависит от ОС, а не от вида ВПН.
    Wireguard я плотно не использовал, но там +- то же самое.

    Если вам не нужен ВПН за бугор, то внутри РФ не должно быть проблем с блокировкой. Хотя сейчас вообще интернет часто штормит во многих регионах, даже и без ВПН.

    Есть еще OpenConnect (ocserv), его вроде бы пока не научились блокировать и можно с ним за границу ходить. Но тут у меня вообще пока мало опыта, хотя я сейчас пытаюсь его использовать вместо OpenVPN. Но еще мало кейсов с ним у меня было. Кстати, у ocserv несколько вариантов клиентов от разных производителей, возможно у него есть клиентская библиотека на которой они все базируются. Но это лишь предположение, т.к. мне это без надобности, то в эту сторону я не копал.
    Написано
  • Надежный VPN клиент в виде либы?

    @res2001
    Xavisonell,
    клиент изначально рассчитанный на использование человеком

    Вообще для ВПН GUI - не обязательная часть. Тот же openvpn или wireguard прекрасно могут обходиться без него. А если вы еще и сконфигурируете его "автоматически" и сервис настроите на запуск/остановку вручную со своим собственным не стандартным именем сервиса, то клиент может никогда его и не увидеть.
    Конечно пытливый пользователь сможет о нем узнать по дополнительному процессу и сетевому адаптеру в системе и т.п. , но у вас вроде бы нет цели это скрывать.
    Написано
  • Надежный VPN клиент в виде либы?

    @res2001
    По моему концепция ВПН не вписывается в "использование в моем коде". ВПН - это максимальное абстрагирование от конечного пользователя, чтоб любое приложение могло использовать ВПН канал прозрачно. Поэтому ВПН создает виртуальный сетевой адаптер в ОС, который могут использовать любые приложения, используя стандартные средства сетевого обмена, предоставляемые ОС. И тут не важно - ВПН клиент это или сервер - у обоих концепция использования одинаковая.
    Для автоматизации настройки любого ВПН можете для пользователя сделать скрипт, который будет запускать и настраивать ВПН на стороне пользователя. Без встраивания в приложение. Можно встроить установку ВПН в ваш инсталлятор. В само приложение можно встроить функционал запуска и останова службы ВПН.
    Написано
  • Как получить ERRORLEVEL при проверке доступности сервера из bat без команды ping?

    @res2001
    Зависит от того какие службы работают на сервере.
    Например веб сервер можно проверить любым запросом с помощью wget/curl и анализировать возврат сервера. Можно для этих целей на сервере завести специальную простую статическую страничку и ее запрашивать. Или же вообще использовать телнет, например.
    Но не все утилиты устанавливают errorlevel в зависимости от ответа, в этом случае надо анализировать сам текст ответа.
    Написано
  • Кто может подсказать как дописать скрипт в C++?

    @res2001
    Dendan1002,
    Нужно ограничить доступ детей к пк , но необходимо чтобы он был постоянно включен и были запущены нужные программы .

    Эта возможность уже есть в винде из коробки - называется пароль в свой личный аккаунт + скринсейвер с разблокировкой по паролю. Все это настраивается достаточно просто. Для быстрого входа в режим блокировки есть хоткей: Win+L.
    Другое дело, если на этом же компе есть "законные" аккаунты детей - они тогда смогут заходить в свои аккаунты. Но с этим уже могут помочь всякие "родительские контроли" и т.п.
    Написано