Cygwin

Поделись знанием:
Перейти к: навигация, поиск
Cygwin

Cygwin на Windows XP
Тип

Эмулятор

Разработчик

Red Hat и другие

Написана на

C/C++

Операционная система

Microsoft Windows, Windows NT

Лицензия

GNU GPL

Сайт

[cygwin.com com]

CygwinCygwin

Cygwin (произносится /ˈsɪgwɪn/)[1] — UNIX-подобная среда и интерфейс командной строки для Microsoft Windows. Cygwin обеспечивает тесную интеграцию приложений, данных и ресурсов Windows с приложениями, данными и ресурсами UNIX-подобной среды. Из среды Cygwin можно запускать обычные приложения Windows, также можно использовать инструменты Cygwin из Windows.

Cygwin состоит из двух частей: динамически подключаемой библиотеки (DLL) cygwin1.dll, которая обеспечивает совместимость API и реализует значительную часть стандарта POSIX, и огромной коллекции приложений, которые обеспечивают привычную среду UNIX, включая Unix shell.

Изначально Cygwin был разработан компанией Cygnus Solutions, которую позднее приобрела Red Hat. Это свободное ПО, опубликованное под GNU General Public License версии 2. В настоящее время Cygwin разрабатывается сотрудниками Red Hat, NetApp и множеством добровольцев.

Подобные функциональные возможности предлагала также и Microsoft в своём пакете Services for UNIX, включающем в себя подсистему Interix, и Subsystem for UNIX-based Applications (в более новых версиях).





Описание

Cygwin представляет собой инструмент для портирования ПО UNIX в Windows и представляет собой библиотеку, которая реализует интерфейс прикладного программирования POSIX на основе системных вызовов Win32. Кроме того, Cygwin включает в себя инструменты разработки GNU для выполнения основных задач программирования, а также и некоторые прикладные программы, эквивалентные базовым программам UNIX. В 2001 году в Cygwin был включён пакет X Window System.

Кроме того, Cygwin содержит библиотеку MinGW, позволяющую работать с библиотекой Microsoft MSVCRT (Windows API); библиотека MinGW менее требовательна к объёму оперативной и дисковой памяти, распространяется под более свободной лицензией и может работать с любым программным обеспечением, но функциональные возможности спецификации POSIX реализованы в ней не так полно, как в Cygwin.

Red Hat реализует библиотеку Cygwin под лицензией GNU GPL, таким образом, её можно использовать только в программах, распространяемых под GPL. (Для распространения программ, использующих библиотеку Cygwin, под лицензией, отличной от GPL, необходимо приобретение лицензии у RedHat.)

На странице [cygwin.com/lists.html Cygwin Mailing Lists] можно подписаться на рассылку, посвящённую Cygwin.

История

Работа над проектом Cygwin была начата в 1995 году Стивом Чемберленом (англ. Steve Chamberlain), программистом Cygnus, заметившим, что Windows NT и Windows 95 используют в качестве формата объектных файлов формат COFF. К тому времени в GNU уже была реализована поддержка архитектуры x86, COFF, а также библиотека языка C newlib; таким образом, по крайней мере теоретически, не представляло затруднений получить из GCC кросс-компилятор, который бы создавал исполняемые файлы Windows. Это оказалось несложным и на практике. Вскоре появился прототип.

Следующим шагом было заставить компилятор работать в Windows, но для этого была необходима эмуляция многих функций Unix: к примеру, должен был работать скрипт GNU configure. Этот скрипт нуждается в оболочке типа bash, которая, в свою очередь, требует наличия стандартных потоков ввода-вывода и системного вызова fork. Windows располагает подобными функциональными возможностями, и библиотека Cygwin лишь транслирует вызовы, исходящие от программ, управляя определёнными видами данных, такими как файловые дескрипторы.

В 1996 году к проекту Cygwin присоединились и другие программисты, так как стало очевидным, что Cygwin сделает возможным использование инструментов Cygnus на системах с Windows (до этого намечалось использовать DJGPP). Этот вариант был особенно привлекательным, ведь кросскомпиляция могла бы производиться в трёх направлениях: можно было использовать мощную станцию Sun для сборки Windows-кросскомпилятора MIPS, что позволяло значительно экономить время. С 1998 года Cygnus предлагает пакет Cygwin в качестве самостоятельного продукта.

Интернационализация

До версии 1.7 Cygwin не имел поддержки Unicode и использовал только ANSI-варианты функций Win32; отсутствовала также и поддержка каких-либо кодировок, отличных от родных для Windows и OEM (так, в русскоязычной версии Windows Cygwin работала лишь с CP1251 и CP866, но не KOI8-R, ISO 8859-5, UTF-8 или какими-либо другими; тем не менее при работе в X Window System под Cygwin можно было использовать и другие кодировки, установив шрифты и настройки клавиатуры).

Начиная с версии 1.7 кодировкой по умолчанию является Unicode в форме UTF-8 и, соответственно, по умолчанию используется локаль C.UTF-8. При вызове функций Win32 Cygwin осуществляет трансляцию строк в кодировку UTF-16, используемую в системах Windows. Начиная с версии 1.7.2 Cygwin также может извлекать некоторую информацию из реестра Windows в соответствии с установками Language и Territory в локали.

Другая проблема заключалась в том, что консоль Cygwin (подобно CMD.EXE) использовала кодировку OEM. Для обхода этого ограничения рекомендовалось запускать в Cygwin демоны rshd или sshd и использовать эмулятор терминала с полной поддержкой UTF-8, например PuTTY. Начиная с версии 1.7 консоль Cygwin также работает в кодировке UTF-8, что позволяет выводить текстовую информацию в UTF-8 напрямую. Также консоль осуществляет трансляцию вводимой с клавиатуры информации в UTF-8, в соответствии с используемой национальной раскладкой.

Работа с кириллицей

В современных версиях Cygwin работа с русскими символами не требует дополнительных настроек. Символы кириллицы поддерживаются в нейтральных региональных настройках LANG=C.UTF-8, в том числе имена файлов, имена пользователей и данные реестра. Можно установить русскоязычные региональные настройки LANG=ru_RU.UTF-8. При этом включатся русскоязычные сообщения (у некоторых программ), даты по-русски (LC_TIME) и другие региональные настройки.

Напишите отзыв о статье "Cygwin"

Примечания

  1. Larry Hall. [cygwin.com/ml/cygwin/2004-09/msg00702.html Re: How do you pronounce it?] (англ.) (14 September 2004). Проверено 27 апреля 2010. [www.webcitation.org/61CESD1IS Архивировано из первоисточника 25 августа 2011].

См. также

Ссылки

  • [cygwin.com Cygwin Home]
  • [cygwin.com/packages/ Cygwin Package Listings]
  • [freshmeat.net/projects/cygwin/?topic_id=45%2C74 Cygwin page] на Freecode
  • [cygnome.sourceforge.net/ CYGNOME] = cygwin + GNOME
  • [kde-cygwin.sourceforge.net/ KDE-cygwin] = cygwin + KDE
  • [unxutils.sourceforge.net/ GNU utilities for Win32] — похожий проект по переносу утилит UNIX в Windows, но без эмуляции POSIX API.
  • [lifehacker.com/179514/geek-to-live--introduction-to-cygwin-part-i Geek to Live: Introduction to Cygwin, part I], [lifehacker.com/180690/geek-to-live--introduction-to-cygwin-part-ii-+-more-useful-commands part II], [lifehacker.com/181282/geek-to-live--introduction-to-cygwin-part-iii-+-scripts-packages-and-more part III] — Просто и доступно, объяснение установки, начала работы с Unix-like командной строкой

Отрывок, характеризующий Cygwin

Проехав по дороге, с обеих сторон которой звучал от костров французский говор, Долохов повернул во двор господского дома. Проехав в ворота, он слез с лошади и подошел к большому пылавшему костру, вокруг которого, громко разговаривая, сидело несколько человек. В котелке с краю варилось что то, и солдат в колпаке и синей шинели, стоя на коленях, ярко освещенный огнем, мешал в нем шомполом.
– Oh, c'est un dur a cuire, [С этим чертом не сладишь.] – говорил один из офицеров, сидевших в тени с противоположной стороны костра.
– Il les fera marcher les lapins… [Он их проберет…] – со смехом сказал другой. Оба замолкли, вглядываясь в темноту на звук шагов Долохова и Пети, подходивших к костру с своими лошадьми.
– Bonjour, messieurs! [Здравствуйте, господа!] – громко, отчетливо выговорил Долохов.
Офицеры зашевелились в тени костра, и один, высокий офицер с длинной шеей, обойдя огонь, подошел к Долохову.
– C'est vous, Clement? – сказал он. – D'ou, diable… [Это вы, Клеман? Откуда, черт…] – но он не докончил, узнав свою ошибку, и, слегка нахмурившись, как с незнакомым, поздоровался с Долоховым, спрашивая его, чем он может служить. Долохов рассказал, что он с товарищем догонял свой полк, и спросил, обращаясь ко всем вообще, не знали ли офицеры чего нибудь о шестом полку. Никто ничего не знал; и Пете показалось, что офицеры враждебно и подозрительно стали осматривать его и Долохова. Несколько секунд все молчали.
– Si vous comptez sur la soupe du soir, vous venez trop tard, [Если вы рассчитываете на ужин, то вы опоздали.] – сказал с сдержанным смехом голос из за костра.
Долохов отвечал, что они сыты и что им надо в ночь же ехать дальше.
Он отдал лошадей солдату, мешавшему в котелке, и на корточках присел у костра рядом с офицером с длинной шеей. Офицер этот, не спуская глаз, смотрел на Долохова и переспросил его еще раз: какого он был полка? Долохов не отвечал, как будто не слыхал вопроса, и, закуривая коротенькую французскую трубку, которую он достал из кармана, спрашивал офицеров о том, в какой степени безопасна дорога от казаков впереди их.
– Les brigands sont partout, [Эти разбойники везде.] – отвечал офицер из за костра.
Долохов сказал, что казаки страшны только для таких отсталых, как он с товарищем, но что на большие отряды казаки, вероятно, не смеют нападать, прибавил он вопросительно. Никто ничего не ответил.
«Ну, теперь он уедет», – всякую минуту думал Петя, стоя перед костром и слушая его разговор.
Но Долохов начал опять прекратившийся разговор и прямо стал расспрашивать, сколько у них людей в батальоне, сколько батальонов, сколько пленных. Спрашивая про пленных русских, которые были при их отряде, Долохов сказал:
– La vilaine affaire de trainer ces cadavres apres soi. Vaudrait mieux fusiller cette canaille, [Скверное дело таскать за собой эти трупы. Лучше бы расстрелять эту сволочь.] – и громко засмеялся таким странным смехом, что Пете показалось, французы сейчас узнают обман, и он невольно отступил на шаг от костра. Никто не ответил на слова и смех Долохова, и французский офицер, которого не видно было (он лежал, укутавшись шинелью), приподнялся и прошептал что то товарищу. Долохов встал и кликнул солдата с лошадьми.
«Подадут или нет лошадей?» – думал Петя, невольно приближаясь к Долохову.
Лошадей подали.
– Bonjour, messieurs, [Здесь: прощайте, господа.] – сказал Долохов.
Петя хотел сказать bonsoir [добрый вечер] и не мог договорить слова. Офицеры что то шепотом говорили между собою. Долохов долго садился на лошадь, которая не стояла; потом шагом поехал из ворот. Петя ехал подле него, желая и не смея оглянуться, чтоб увидать, бегут или не бегут за ними французы.
Выехав на дорогу, Долохов поехал не назад в поле, а вдоль по деревне. В одном месте он остановился, прислушиваясь.
– Слышишь? – сказал он.
Петя узнал звуки русских голосов, увидал у костров темные фигуры русских пленных. Спустившись вниз к мосту, Петя с Долоховым проехали часового, который, ни слова не сказав, мрачно ходил по мосту, и выехали в лощину, где дожидались казаки.
– Ну, теперь прощай. Скажи Денисову, что на заре, по первому выстрелу, – сказал Долохов и хотел ехать, но Петя схватился за него рукою.
– Нет! – вскрикнул он, – вы такой герой. Ах, как хорошо! Как отлично! Как я вас люблю.
– Хорошо, хорошо, – сказал Долохов, но Петя не отпускал его, и в темноте Долохов рассмотрел, что Петя нагибался к нему. Он хотел поцеловаться. Долохов поцеловал его, засмеялся и, повернув лошадь, скрылся в темноте.

Х
Вернувшись к караулке, Петя застал Денисова в сенях. Денисов в волнении, беспокойстве и досаде на себя, что отпустил Петю, ожидал его.
– Слава богу! – крикнул он. – Ну, слава богу! – повторял он, слушая восторженный рассказ Пети. – И чег'т тебя возьми, из за тебя не спал! – проговорил Денисов. – Ну, слава богу, тепег'ь ложись спать. Еще вздг'емнем до утг'а.
– Да… Нет, – сказал Петя. – Мне еще не хочется спать. Да я и себя знаю, ежели засну, так уж кончено. И потом я привык не спать перед сражением.
Петя посидел несколько времени в избе, радостно вспоминая подробности своей поездки и живо представляя себе то, что будет завтра. Потом, заметив, что Денисов заснул, он встал и пошел на двор.
На дворе еще было совсем темно. Дождик прошел, но капли еще падали с деревьев. Вблизи от караулки виднелись черные фигуры казачьих шалашей и связанных вместе лошадей. За избушкой чернелись две фуры, у которых стояли лошади, и в овраге краснелся догоравший огонь. Казаки и гусары не все спали: кое где слышались, вместе с звуком падающих капель и близкого звука жевания лошадей, негромкие, как бы шепчущиеся голоса.
Петя вышел из сеней, огляделся в темноте и подошел к фурам. Под фурами храпел кто то, и вокруг них стояли, жуя овес, оседланные лошади. В темноте Петя узнал свою лошадь, которую он называл Карабахом, хотя она была малороссийская лошадь, и подошел к ней.
– Ну, Карабах, завтра послужим, – сказал он, нюхая ее ноздри и целуя ее.
– Что, барин, не спите? – сказал казак, сидевший под фурой.
– Нет; а… Лихачев, кажется, тебя звать? Ведь я сейчас только приехал. Мы ездили к французам. – И Петя подробно рассказал казаку не только свою поездку, но и то, почему он ездил и почему он считает, что лучше рисковать своей жизнью, чем делать наобум Лазаря.
– Что же, соснули бы, – сказал казак.
– Нет, я привык, – отвечал Петя. – А что, у вас кремни в пистолетах не обились? Я привез с собою. Не нужно ли? Ты возьми.
Казак высунулся из под фуры, чтобы поближе рассмотреть Петю.
– Оттого, что я привык все делать аккуратно, – сказал Петя. – Иные так, кое как, не приготовятся, потом и жалеют. Я так не люблю.