Задать вопрос
  • Как зайти в консоль работающей службы?

    @res2001
    Смотрите доку mincraft, имеет ли он консоль в режиме службы и если да, то как получить к ней доступ.
    В подобных случаях нет стандартного решения, т.к. у службы отсутствуют стандартные потоки.
    Обычно службы могут слушать какой-либо локальный порт, к которому можно подключиться, например, telnetом. Либо предоставляют своего клиента для управления, который связывается со службой каким-то ему ведомым способом.
  • Что делать если средство разметки дисков показывает разделы неправильно?

    @res2001
    Если диск разбит под MBR, то возможно эти разделы являются частью расширенного раздела.
    На сколько я помню, расширенные разделы fdisk как раз и показывает как один большой раздел.
  • Как настроить vpn сервер (OpenVPN или Wireguard) чтобы подключаться к нему можно было просто имея файл конфигурации?

    @res2001
    verssetty,
    если бы хоть 1 сервак там был

    Да, там полно серверов, которые не работают или отваливаются на следующий день или сначала работают нормально, а потом скорость проседает. Но это же бесплатно, что вы хотите?
    Кстати, иногда попадались сервера, которые по пару месяцев сносно работали. Но это редкость.

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

    На некоторые серваки гугл ругается - говорит, участники ботнета. Раньше то же такого не видел.

    нашел его

    Кстати, свою ссылку я когда-то нашел на сайте vpngate. Или это одна и та же лавочка, или кто-то из них берет информацию у другого.
  • Как запустить фоновый процесс из popen под win64?

    @res2001
    redcircle,
    И несмотря на вроде как параллельный запуск второго cmd.exe через start, первый cmd.exe почему-то не завершается, пока не завершится второй cmd.exe вызыванный через start. Уже проверял это не один десяток раз.

    Тогда попутные вопросы по приведенному примеру с
    cmd /c '(start "" cmd.exe /k) && timeout /t 30'
    После запуска второго окна cmd команда timeout стартует сразу? Что происходит после того как timeout закончится? Остается висеть первое окно cmd?
    Если добавить еще команду exit после timeout будет так же?

    Вы писали, что функция process() выполняет команду в cmd.exe, т.е. судя по всему она сама запускает cmd.
    Передав в process() вышеприведенную строку в итоге, видимо получилось что-то вроде:
    cmd /c cmd /c '(start "" cmd.exe /k) && timeout /t 30'

    Так что, возможно, одна cmd /c лишняя.

    В менеджере задач винды на вкладке Детально, можно добавить дополнительный столбец с командной строкой запуска и там можно увидеть какая конструкция в итоге получается на выходе из process().
  • Как запустить фоновый процесс из popen под win64?

    @res2001
    redcircle,
    При этом мне только одну программу надо запускать, а не 2.

    Одну вы запускаете изначально для чего вызываете функцию process(). Вторую вы хотите запустить параллельно первой.
    Если вторую надо запустить после возврата из первой, тогда все упрощается:
    program1.exe
    start "" program2.exe


    С Windows такое почему-то не работает, cmd.exe всё равно дожидается выполения фоновых процессов почему-то

    В винде, если запускать программу через start, то ожидания завершения процесса не происходит.
    Для примера, запустите в консоли это:
    (start "" cmd.exe /k) && timeout /t 30
  • Как запустить фоновый процесс из popen под win64?

    @res2001
    redcircle,
    Нужно как раз не ждать завершения.

    На сколько я понимаю, функция process запускает процесс и завершается после завершения процесса, т.к. в конце дескриптор канала закрывается. Поэтому после завершения функции можно считать, что и запущенного процесса уже нет.
    Думаю можно сделать примерно так: в process запускать батник примерно следующего содержания (схематично):
    :: process1.bat
    start "" cmd.exe /c process2.bat
    program1.exe

    Батник сначала запускает второй батник (process2.bat), причем второй батник должен запуститься в другом процессе cmd.exe и в другом консольном окне и не нужно ждать завершения второго батника, поэтому второй батник запускаем через start.
    После запуска второго батника стартуем тот процесс, который нужно стартовать изначально (programm1.exe)
    :: process2.bat
    timeout /t 2
    program2.exe

    Второй батник process2.bat сначала просто ждет заданное время (у меня 2 секунды), это нужно, чтобы первый батник успел запустить приложение program1.exe. Затем стартует ваше второе приложение, которое вам надо запустить после первого. Правда есть шанс, что пока стартанет второе приложение, первое уже закроется :)
  • Почему архиватор работает только с текстовыми файлами?

    @res2001
    Anton F, Да я в курсе. Просто string чисто семантически говорит о том, что внутри строка и так и подмывает работать с ним как со строкой и нужно постоянно себя держать в рамках, когда знаешь, что внутри не строка. Лучше этот мазохизм прекратить с самого начала.
  • Как настроить или создать интернет прокси или шлюз на домашнем пк что бы с его ip заходить удаленно?

    @res2001
    clenar, ВПС в предложенном варианте будет выступать как ВПН сервер, к которому будет подключаться домашний комп (роутер) и удаленный. Дальше настроив правильно маршрутизацию можно добиться, чтоб с удаленного компа через ВПН сервер вы попадали на домашний комп, а дальше выходили туда куда вам надо.
    Т.е. будет выполняться ваше условие.
    Хотя проще и короче, конечно, выходить через ВПН сервер.
  • Как настроить или создать интернет прокси или шлюз на домашнем пк что бы с его ip заходить удаленно?

    @res2001
    Либо арендовать VPS у которого будет белый статический IP, развернуть на нем ВПН сервер, к которому подключаться из дома и с удаленного места и через эту цепочку выходить куда надо.
    В этом случае домашний адрес можно не менять.
    Но этот вариант будет наверняка дороже, чем арендовать белый адрес у провайдера. Но зато реализовать его можно за несколько часов (при наличии некоторого опыта), а провайдер может выдать статический адрес только на следующий месяц после добавления этой услуги в договор, хотя это зависит от вашего конкретного провайдера.

    Можно начать с VPS и параллельно получать адрес у прова. Когда адрес получите, то от VPSа можно отказаться и перейти на любой из предложенных в ответе вариантов.
    Если делать параллельно оба варианта, то обычно операторы VPS предлагают тестировать бесплатно некоторую минимальную конфигурацию VPS в течение некоторого времени (неделя/месяц, у кого как). Для разворачивания ВПН "минималки" вполне будет достаточно. Так что может и не понадобится тратится на временный VPS.
  • Ipfire. Как реализован протокол strongswan?

    @res2001
    brbwk,
    ну должен же быть процесс, который держит сокет для прослушивания

    Не факт. Например если трафик по ВПН приходит транзитный, то он из ядра не выходит - сразу перенаправляется на другой интерфейс с помощью таблицы маршрутизации и/или фаервола.
    Если трафик предназначен для этого же хоста, тогда такой процесс есть. Только это не charon или strongswan, а например апач или любое другое приложение - зависит от трафика.
    Если что, ответ на пинг то же генерируется ядром самостоятельно.
  • Ipfire. Как реализован протокол strongswan?

    @res2001
    На сколько я знаю, ipsec реализован как часть TCP/IP в ядре. User space демоны нужны лишь для инициализации и управления ключами. Остальной ВПН трафик расшифровывается в ядре и дальше уже расшифрованный трафик попадает непосредственно адресату (клиентскому приложению).
    Поэтому вы в хуках и не видите собственно трафика, а только пакеты isakmp.
  • Как реализовать Оператор OR в команде FOR?

    @res2001
    Djasar, да хоть 100 файлов - цикл один, главное, чтоб файлы попадали под маску
  • Почему архиватор работает только с текстовыми файлами?

    @res2001
    Jden10, Хотите работать с бинарными файлами, не используйте нигде std::string. Вектор байтов ваше все.
    И может быть даже и вектор не нужен, а можно обойтись массивом фиксированного размера (std::array) - будет работать быстрее.
  • Как сконфигурировать монтирование дисков в linux, чтобы при клонировании на другой hdd система запустилась?

    @res2001
    vl-roma,
    Есть подозрение что не может смонтироваться так ориентируется на UIDD

    Что это значит? Для снятия подозрений надо просто открыть fstab и посмотреть глазами.
    Если в fstab исходного диска разделы монтируются по UUID руками поправьте его на монтирование по именам.
  • Как в *.cmd после findstr произвести математические вычисления?

    @res2001
    Роман,
    Результат:
    "RAM= GB"

    Из того что вижу в вашем коде у первого findstr не задано выражение поиска. findstr нужна чтоб что-то искать в тексте. Что она будет искать у вас не задано. Скорее всего findstr завершается с ошибкой.
    Просто запустите эти команды в консоле вне батника и посмотрите что будет в результате.

    Арифметика в батниках возможно только с помощью set /a
    Для справки:
    findstr /?
    set /?
    for /?
    setlocal /?
  • Как создают интерфейсы в программах?

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

    Функционал GUI предоставляет ОС (в случае никсов не ОС, а X11, но это не принципиально). В приложении на любом ЯП вы просто можете использовать базовый функционал ОС. ОС (и Х11) свой функционал предоставляют в виде набора стандартных библиотек, которые вы подключаете к своему приложению на Си (или любом другом ЯП).
    Но обычно, использовать базовый функционал сложно (или мало плюшек или плюшки еще сложнее использовать или много кода или хочется ООП и т.п.), поэтому вокруг базового функционала написано куча дополнительных библиотек, которые упрощают использование GUI и возможно дают что-то сверху.
    Во многих современных библиотеках реализуют кросс-платформенный вариант GUI, основываясь на базовом функционале для каждой конкретной платформы. Например Qt, wxWidgets и т.д. и т.п.
    Сейчас на Си писать GUI не слишком популярно, но, конечно, никто не запрещает это делать. Если очень надо, то лучше использовать С++ или C#.
  • Есть ли способ быстро выравнивать адреса?

    @res2001
    jcmvbkbc,
    увеличивает адрес, даже если он уже был выровнен

    И точно. Даже 1 раз попадал, похоже, на эту ошибку, что приводило к выходу за гранцы буфера. Каким-то костылем тогда вышел из положения, но причину не понял. Спасибо!
  • Есть ли способ быстро выравнивать адреса?

    @res2001
    Герман,
    позволю себе спросить ещё вот что: можно ли выравнять адрес до ближайшей к нему степени двойки (в большую сторону)? 1000 -> 1024, 3000 ->4096 и т.д.

    Есть быстрый алгоритм нахождения ближайшей большей степени двойки для числа. В данном случае адрес можно рассматривать как целое число.
    Найти его можно тут: https://github.com/gibsjose/BitHacks/blob/master/B... среди других подобных алгоритмов. Там правда он рассчитан на 32битное целое, но по аналогии его можно привести к 64битному.

    Для выравнивания адреса я использую обычно этот вариант:
    addr = (addr | (alignment - 1)) + 1;
    Где alignment - степень двойки.
  • Округление при подсчёте в С++?

    @res2001
    Miroslav Bodrich, У тебя сейчас x на 21 шаге больше, чем endX из-за специфики чисел с плавающей точкой. Поэтому цикл завершается раньше времени.
    Измени условие выхода из цикла, посчитай целое количество шагов и цикл поменяй на for с заданным количеством шагов.

    И если считать x как предложил jcmvbkbc, то погрешность результата будет меньше, чем если использовать сложение (как сейчас).