Ответы пользователя по тегу *nix-подобные системы
  • Синхронизация в Си или чем отличается вывод в файл от вывода в stdout

    CleverMouse
    @CleverMouse
    Попробуйте в shell-скрипте открывать файл не через ">", а через ">>", убедившись, что перед операцией файла не существует.
    Возможно, различные процессы каким-то образом получают несвязанные копии дескриптора файла, в которых позиция в файле не обновляется при печати из других процессов; тогда процесс 1 может напечатать свою букву a, а потом процесс 2 печатает свою букву b на ту же позицию в файле, затирая a от первого процесса. С консолью такой проблемы нет, потому что она не seekable, в ней нет позиции как таковой. Открывание файла для дозаписи преследует ту же цель — перед каждой операцией записи позиция будет устанавливаться на конец файла.
    Ответ написан
    1 комментарий
  • Програма есть, но она не запускается

    CleverMouse
    @CleverMouse
    В формате ELF за загрузку динамических библиотек отвечает специальная библиотека-интерпретатор aka interpreter, имя которой указано в специальном сегменте elf-файла. Если ядро при exec() обнаруживает такой заголовок, то ядро берёт оттуда имя интерпретатора и пытается загрузить и начать выполнение новой программы с интерпретатора. Если запрошенного интерпретатора на диске не оказывается, создание процесса фейлится с кодом ошибки «файл не найден». С точки зрения создателя — на картинке это bash — это ничем не отличается от отсутствия бинарника, а ядро, которое знает разницу, на терминал ничего не выводит в принципе.
    Посмотреть, какой интерпретатор нужен программе, можно через readelf -l . В данном случае явно из 64-битного окружения куда-то слетел 32-битный интерпретатор.
    Ответ написан
    Комментировать