PRINT (команда)
PRINT — это команда в вычислительной технике. В ранних однозадачных операционных системах (таких как MS-DOS) она выполняла роль однопользовательского спулера (системы ведения очереди печати), однако в современных многопользовательских системах (включая Windows 11 и Windows Server 2025) является унаследованной клиентской утилитой, передающей задания системному диспетчеру печати[1][2]. Исторически она аналогична функциям, предоставляемым системами ведения очереди печати lp в UNIX System V и lpr в BSD.
История и эволюция
Концепция фоновой печати и управления очередью вывода берёт начало из операционных систем компании DEC, таких как RT-11 и VMS[3].
Команда PRINT была внедрена в MS-DOS/IBM PC DOS 2.0. В состав DR DOS 6.0 также входила собственная реализация команды PRINT[4].
В ранних версиях DOS печать осуществлялась командой copy: файл, предназначенный для печати, просто «копировался» в файл, соответствующий устройству печати. Управление возвращалось пользователю только после завершения печати. Начиная с DOS 2.0, команда print позволила реализовать спулирование: т.е. продолжать работу на компьютере во время печати и создавать очередь задач на печать[5].
В MS-DOS команда была реализована как резидентная программа (TSR)[6]. В современных версиях Windows она эволюционировала в простой интерфейс командной строки для графической подсистемы печати.
Реализации
Команда PRINT доступна в операционных системах DEC: RT-11, OS/8[7], RSX-11[8], TOPS-10 и TOPS-20, а также в DR FlexOS[9], DR DOS, TSL PC‑MOS[10], Paragon Technology PTS-DOS[11], SISNE plus, IBM OS/2, eComStation, ArcaOS, Microsoft Windows, FreeDOS[12], Stratus OpenVOS[13], AROS, HP MPE/iX и OpenVMS. В операционных системах Windows 11 и Windows Server 2025 команда поддерживается для фоновой печати на локальные порты[14][15], а в ArcaOS 5.1 работает через современную подсистему печати CUPS[16].
Версия FreeDOS была разработана Джеймсом Тейбором, распространяется под лицензией GPL[17] и поддерживается в актуальной версии FreeDOS 1.4[18].
Техническая реализация
В однозадачной среде MS-DOS команда PRINT обеспечивала фоновую печать, функционируя как резидентная программа (TSR). Для имитации многозадачности она перехватывала системные прерывания: прерывание таймера (INT 1Ch) и прерывание бездействия DOS (INT 28h). Механизм работы основывался на принципе разделения времени (time-slicing). Получая управление при срабатывании таймера, программа отправляла данные на принтер короткими порциями (квантами), после чего возвращала управление основной задаче[5].[19]
Синтаксис и параметры
В операционной системе MS-DOS команда PRINT имеет ряд параметров для управления очередью и процессом фоновой печати[5][6]:
/D:устройство— задаёт порт устройства печати (например, LPT1—LPT3 или COM1—COM4)[5].[6]/B:размер— устанавливает размер внутреннего буфера в байтах (от 512 до 16384)[5].[6]/C— удаляет указанные файлы из очереди на печать[5].[6]/T— прекращает текущую печать и полностью очищает очередь[5].[6]
Отдельную группу составляют параметры встроенного планировщика, регулирующие распределение процессорного времени[20]:
/S:timeslice(временной срез) — определяет, как часто утилита получает управление (по умолчанию 8)[20]./M:maxticks(максимальное количество тактов) — задаёт максимальное количество тактов системного таймера, выделяемых на один активный сеанс печати (по умолчанию 2)[20]./U:busyticks(такты занятости) — определяет, сколько тактов таймера программа будет ждать ответа, если принтер занят или не готов (по умолчанию 1)[20].
В современных версиях Windows синтаксис команды значительно упрощён. Большинство параметров для тонкой настройки процесса фоновой печати отсутствует, а использование сводится в основном к указанию принтера (/D:принтер) и пути к целевому файлу[21].
Примеры использования
Основные примеры использования команды print в командной строке:
Оценки и критика
Пользователи первой версии команды print отмечали низкую скорость печати и большой расход ресурсов, а также нехватку поддержки для только что введённых подкаталогов. Команда стала одной из первых широко используемых резидентных программ и послужила примером для разработки подобных утилит: многие изучали её бинарный код для понимания написания резидентных программ.
Современные альтернативы
В современных версиях операционных систем Windows (таких как Windows 11 и Windows Server 2025) основной альтернативой устаревшей команде PRINT является командлет PowerShell Out-Printer. Он позволяет отправлять вывод команд или содержимое файлов на принтер по умолчанию или на любой другой указанный принтер в сети[22].
Пример использования командлета для отправки текстового файла на принтер по умолчанию[22]:
Get-Content -Path C:\Documents\MyFile.txt | Out-Printer
Примечания
Литература
- Jim Cooper. Special Edition Using MS-DOS 6.22, Third Edition. — Que Publishing, 2001. — ISBN 978-0789725738.
- Kathy Ivens. OS/2 Inside & Out / Kathy Ivens, Brian Proffit. — Osborne McGraw-Hill, 1993. — ISBN 978-0078818714.
- John Paul Mueller. Windows Administration at the Command Line for Windows Vista, Windows 2003, Windows XP, and Windows 2000. — John Wiley & Sons, 2007. — ISBN 978-0470165799.