Назар Мокринский: не имеет, потому что нет никаких гарантий о согласованности структуры файловой системы в разные моменты времени в течение проверки. Так что наверняка при этом найдутся ошибки, но нельзя будет сказать, вызваны ли они реальными повреждениями файловой системы, или штатной записью на диск, произошедшей в процессе проверки.
shansung: для начала -- понять, что вы хотели и как это делается с помощью сокетов.
По коду создаётся впечатление, что вам нужно было соединение TCP, т.е. SOCK_STREAM, но вместо этого по какой-то причине (догадываюсь, что кто-то не осилил сделать фрейминг своих сообщений) SOCK_STREAM был заменён на SOCK_DGRAM, который работает совсем по-другому.
> скомпилированные нативные модули вроде EXE, ELF, DLL, LIB, SO и прочих не имеют стандартизированных способ хранить информацию о классах.
Это не совсем так. Отладочная информация DWARF позволяет хранить описание структур и классов, причём не только типы и названия полей, но и расположение полей в памяти. Просмотреть её можно, например, командой dwarfdump.
> "можно сгенерировать из самой dll"
> А способ сделать это не подскажете?
Я давно не имел дела с инструментами от MS.
В линуксе это делается командой nm. Можно попробовать натравить на dll nm из какого-ньть mingw.
> И как в таком случае быть с классами?
Если в dll нет отладочной информации -- то никак.
Если есть, можно попытаться её декодировать. Опять же, виндового инструмента не подскажу.
> Переменная будет размещена в стеке, не в куче?
В зависимости от того, где будет такая конструкция: если внутри функции, без слова static перед ней -- будет на стеке, если добавить static -- будет в статической памяти, если вне функции -- будет в глобальной памяти.
Ещё такую конструкцию можно поместить в другую структуру или класс, тогда это не определение переменной, а определение нового поля этого класса или структуры.
> я попросил помощи в конкретно поставленной задаче
Очень часто правильное решение состоит не в том, чтобы решить данную задачу, а в том, чтобы избавиться от неё. Подумайте об этом.
Ваш пример в вопросе вообще не работает, в отличие от моего. Вы б хоть его попробовали, для разнообразия.
В моём примере не надо ждать curl после каждого запуска.
NO_GLITCH: в моём ответе отправка запроса, получение ответа и запись его в файл выполняются в параллельных процессах, сам цикл по их запуску должен выполниться очень быстро, а дальше надо ждать самого медленного curl.
> Ну вообще имелось ввиду не просто тупой перехват.
Ну вообще вы не написали, что "имелось в виду", а телепатию я не практикую. Текст под заголовком -- как раз подходящее место для того, чтобы развёрнуто сформулировать вопрос для обычных людей.
> А как бы устранения того синего экрана. Без вылета в синий экран.
Синий экран генерируется тогда, когда логика работы ядра уже нарушена настолько, что разработчик умывает руки и говорит: "Я не могу этого исправить. Теперь, чтобы не сломать всё ещё сильнее, остаётся только показать отладочную информацию и прекратить работу". Что вы собираетесь тут лечить?
> что означает person::person() в соурс файле из моего дискрипшена
В ваших исходниках нет такого слова.
Person::Person(int i)
{
int k = i;
}
-- это определение конструктора класса Person с одним параметром.
> Зачем так делать
Для отделения реализации от объявления. Для ускорения сборки и уменьшения числа файлов которые нужно перекомпилировать при изменении реализации person::person.
Они не используются для объявления. Их используют тогда, когда нужно указать положение в иерархии пространств имён, например для того, чтобы определить или сослаться на объект вне текущего пространства имён.
Смотрите на них как на / в файловой системе, на имена неймспейсов, структур и классов -- как на имена каталогов, а на имена функций и переменных -- как на имена файлов.
> Вобщем-то, это ничем не грозит, как я понимаю? А если аналогично затереть тот же сектор (с тем же номером) на другом диске?
Если там нет данных, то почему просто не отметить бэд в файловой системе?
> Да, я в курсе про нули. Вопрос остается.
Получите +1 в mismatch_cnt. mdraid не умеет восстанавливать битые данные сам.
> А насчет "вынести битый диск из рейда и внести его обратно" - с учетом удаленки - контроль не потеряю?
Ну только если у вас rootfs на этом рейде и первый диск навернётся до того, как второй синхронизируется.