Комментарии 30
При переводе зарубежных слайдов следует уделять внимание специфике.
«Не папки — а каталоги» — ибо каталогов много, а папка у тебя один. Обычно по слову «папки» детектируют вендузятников и дуалбутчиков, истинные линуксоиды то, что в LC_ALL=C называют «directory», именуют «каталогами», и никогда не преминут случаем исправить невежд. ©
Folder'ы есть и в linux, просто, в силу преобладающих интерфейсов взаимодействия с системой, у пользователей лучше формируется понимание чем одно отличается от другого.
Про родителей и виндузятников это мнемоника, что бы лучше отпечаталось :)
Но, уловив суть, кое что вы упустили — директория имеет отображение именно в файловой системе и доступна через её интерфейсы. Папка — может быть реализована чисто инструментом на уровень выше. Пример — "последние использованные документы" в nautilus, вы не сможете получить к ней доступ через классический интерфейс fs. Точнее, сможете, но имя будет уже не столь дружелюбно и путь будет другой. Такие вещи как gvfs и fuse призваны сгладить различия, однако не всегда это имеет смысл/возможно.
Так что фсе ваши директорииикаталогиипапки — пижонство.
А ещё файловые дескрипторы можно передавать через unix сокеты. Ну и не забывайте, что select не работает с дескрипторами с номером выше 1024
Это вы выдумываете. Один вызов select'a не может обрабатывать более 1024 дескрипторов.
Системый вызов select, вообще говоря, может принять структуру любого размера. Её размер определяется первым параметром nfds. Попробуйте увеличить значение ulimit -n и использовать свой собственный fd_set увеличенного размера (либо переопределите __FD_SETSIZE).
Утверждается, что это приведёт к желаемому результату (поддержка дескрипторов с номерами больше 1024). Во всяком случае, во FreeBSD. В Linux же, скорее всего, функция отработает неправильно (лень проверять).
На самом деле, смысла в поддержке >1024 десрипторов нет, т.к. при таких количествах надо использовать epoll.
Да, прошу прощения, с перепутал с pselect.
Хотя, строго говоря, ни стандарт posix ни реализация как минимум linux не ограничивают select конкретно этим числом, есть только ограничение на то, что максимальный номер дескриптора ограничен константой заданной до вызова select. Но это не отменяет того, что я тут неверной информацией разбрасываюсь.
Периодически почитываю ее блог.
У консоли есть какое-то ограничение на длину пути?
> У консоли есть какое-то ограничение на длину пути?
Есть ограничения, но не только у консоли, а у линукса в целом, сейчас я их опишу.
Во-первых, есть ограничения на максимальную длину имени одно файла (и директории соответственно). Это ограничение продиктовано способом записи метаинформации внутри файловых систем. Большинство популярных систем ограничивают длину имени файла в 255 байт. Что будет 255 символов для английского языка и вдвое меньше для русского, по причинам выше описанным. Но при этом директории с длинным именем в 255 байт можно произвольно вкладывать друг в друга.
Что самое удивительное, это работает, и можно переходить в поддиректории гигантской длины свободно. Но тут вступает в силу другое ограничение. Максимальная возможная длина полного пути — это 4095 байт. Ну как ограничение. С одной стороны никто не мешает построить файловую систему, содержащую хоть мегабайтный путь. Но у всех системных вызовов ограничение на длину пути в 4095 байт. Они просто не могут передать больше и обрезают. Что будет дальше, можете догадаться. Редкий программист занимается проверкой корректности переданного пути, так что многочисленные глюки вам гарантированы — можете поэкспериментировать.
Это ограничение связано с размером странички виртуальной памяти — для упрощения работы, чтобы не пришлось делить путь по нескольким виртуальным страницам. Не знаю, насколько сильно он прибит гвоздями. Размер виртуальной страницы можно сконфигурировать. Может быть и PATH_MAX тоже.
Подборка полезных слайдов про Linux