Рубрика «posix»
О чем нельзя забывать при работе с POSIX-сигналами
2021-10-12 в 18:45, admin, рубрики: bsd-системы, C, c++, linux, posix, reentrancy, UNIX, Программирование, Разработка под Linux, системное программированиеCron в Linux: история, использование и устройство
2019-09-19 в 12:45, admin, рубрики: cron, crontab, linux, posix, UNIX, Блог компании Badoo, Настройка Linux, Программирование, системное администрирование
Классик писал, что счастливые часов не наблюдают. В те дикие времена ещё не было ни программистов, ни Unix, но в наши дни программисты знают твёрдо: вместо них за временем проследит cron.
Утилиты командной строки для меня одновременно слабость и рутина. sed, awk, wc, cut и другие старые программы запускаются скриптами на наших серверах ежедневно. Многие из них оформлены в виде задач для cron, планировщика родом из 70-х.
Я долго пользовался cron поверхностно, не вникая в детали, но однажды, столкнувшись с ошибкой при запуске скрипта, решил разобраться основательно. Так появилась эта статья, при написании которой я ознакомился с POSIX crontab, основными вариантами cron в популярных дистрибутивах Linux и устройством некоторых из них.
Используете Linux и запускаете задачи в cron? Вам интересна архитектура системных приложений в Unix? Тогда нам по пути!
Как безопасно программировать в bash
2018-06-03 в 20:37, admin, рубрики: bash, docker, fish, posix, shell-скрипт, ssh, ОболочкиПочему bash?
В bash есть массивы и безопасный режим. При правильном использовании bash почти соответствует практикам безопасного кодирования.
В fish сложнее допустить ошибку, но там нет безопасного режима. Поэтому хорошей идеей станет прототипирование в fish, а затем трансляция с fish на bash, если вы умеете правильно это делать.
Предисловие
Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.
Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.
Главное, что нужно знать о программировании в bash
Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var
и подстановки команд вроде $(cmd)
подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS
с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать полностью »
Обработка ошибок в C
2017-04-03 в 2:57, admin, рубрики: C, c11, C99, libc, posix, информационная безопасность, обработка ошибок, Программирование
Введение
Ошибки, увы, неизбежны, поэтому их обработка занимает очень важное место в программировании. И если алгоритмические ошибки можно выявить и исправить во время написания и тестирования программы, то ошибок времени выполнения избежать нельзя в принципе. Сегодня мы рассмотрим функции стандартной библиотеки (C Standard Library) и POSIX, используемые в обработке ошибок.
Читать полностью »
Minoca OS: новая свободная операционная система
2016-11-01 в 13:32, admin, рубрики: linux, Minoca OS, open source, posix, операционная система, операционные системы, метки: Minoca OS, POSIX
Двое отважных разработчиков Ивэн Грин и Крис Стивенс отчаялись на смелый шаг. Они написали с нуля совершенно новую операционную систему Minoca OS и опубликовали её исходный код под свободной лицензией GNU GPL v3.
Это 625 000 строк отлично документированного кода, преимущественно на языке программирования Си, частично на C++ и Ассемблере. Ядро ОС размером около мегабайта занимает всего несколько мегабайт оперативной памяти.
Читать полностью »
Rust в деталях, часть 2
2016-03-05 в 4:12, admin, рубрики: MIO, posix, Rust, WebSocket, низкоуровневое программирование, ПрограммированиеЧасть 2: Отправка и получение сообщений
В этой серии статей мы рассматриваем процесс создания масштабируемого сервера для чата в реальном времени, во всех деталях. Цель статьи — показать пример практического применения языка Rust на фоне изучения концепций системного программирования и системных API, шаг за шагом.
Вторая часть является прямым продолжением первой, поэтому если вы ее пропустили (или забыли контекст), то рекомендую сначала ознакомиться с ней. В этой части мы продолжаем реализацию протокола WebSocket.
Читать полностью »
Потоки vs процессы на примере нативного Node.js аддона для нагрузочного тестирования
2015-12-30 в 14:08, admin, рубрики: c++, multithreading, node.js, posix, параллельное программирование, Тестирование веб-сервисов Чуть меньше года назад я написал заметку о попытке создать инструмент нагрузочного тестирования на Node.js используя встроенные возможности (модули cluster и net). В комментариях справедливо указали на необходимость анализа RPS и сравнении с другими бенчмарками. В результате сравнения я пришел к естественному выводу, что многопроцессовый сервис никогда не сравнится по производительности с многопоточным из-за очень дорогих издержек на обмен данными (позже мы убедимся в этом на примере)
Читать полностью »