Cygwin

Cygwin(シグウィン)は、Windows OS上でUNIXのような環境を提供する互換レイヤーであり、自由なソフトウェアとして利用できます。これにより、Windows環境にいながらUNIXソフトウェア資産を有効活用することが可能になります。

Cygwinの特徴



Cygwinは、UNIX OS自体を動作させるのではなく、WindowsをUNIXのように見せるソフトウェアです。具体的には、アプリケーションが実行するシステムコールをWindowsのAPIに変換する役割を担っています。VMwareやVirtualBoxのような仮想マシンとは異なり、ハードウェア仮想化は行いません。このため、軽量で動作し、インストールや設定も簡単です。ただし、仮想マシンと比較すると入出力が遅く、大量のデータを扱う用途には不向きな面もあります。

Cygwinには、GNU Core UtilitiesをはじめとするUNIXの基本的なコマンドやBashが付属しています。また、CygwinのターミナルからWindowsの実行ファイル(.exe)を直接呼び出すことも可能です。さらに、パイプを併用することで、UNIXアプリケーションとWindowsアプリケーションを連携させることもできます。

パッケージ管理



CygwinのインストーラーはGUIベースで、パッケージ管理システムとしても機能します。1万を超える豊富なオープンソース[[ソフトウェア]]が利用可能で、インストール後でもソフトウェアの構成変更やアップデートが容易に行えます。CUI(コマンドラインインターフェース)でのパッケージ管理には、`apt-cyg`というコマンドが用意されています。

ランタイムライブラリ



Cygwinの中核を成すのが、ランタイムライブラリである`cygwin1.dll`です。このライブラリはPOSIXのシステムコールと同等の機能を提供し、プログラムはこれを動的にリンクすることで、UNIX上とほぼ同じ動作をWindows上で実現できます。Cygwin用に作られたものではないUNIX用のプログラムのソースコードも、大幅な変更なしにWindows用に再コンパイルできます。

また、CygwinはWindowsのファイルシステムをそのまま扱うことができるため、Windowsで作成したデータとCygwinで作成したデータをシームレスに処理することが可能です。例えば、Windowsで割り当てられたネットワークドライブにもCygwinからアクセスできます。

その他の特徴



Unix System V由来のIPC(プロセス間通信)を利用するアプリケーションのために、サービス(NTサービス)を提供しています。Cygwinに付属しているPostgreSQLは、このサービスが提供する共有バッファやセマフォを利用して動作します。ただし、PostgreSQL自身はバージョン8.0以降、Cygwinへの依存をなくし、Win32ネイティブに書き換えられています。

Xサーバとして、Cygwin/Xが提供されており、GUIアプリケーションも利用可能です。

マイクロソフトはWindows Server 2012以降、UNIXベースアプリケーション用サブシステムを非推奨としており、CygwinのPOSIXエミュレーションモードを代替手段の一つとして紹介しています。

標準Cライブラリとして、GNU CライブラリではなくNewlibを使用しており、`cygwin1.dll`がこれを提供しています。CygwinでコンパイルしたC/C++言語のプログラムを、Cygwinがインストールされていない環境で実行するには、`cygwin1.dll`を同梱する必要があります。

`/dev/mem`の機能は、バージョン1.7.22で打ち切られました。現在、この機能を利用するプログラムは動作しません。

注釈



Cygwinは、Windows環境でUNIXのツールや開発環境を利用したいユーザーにとって、非常に便利なツールです。仮想マシンよりも軽量で手軽に利用できるため、UNIX環境での開発経験がある方や、UNIXのツールをWindowsで活用したい方におすすめです。

関連項目



MinGW
Mingw-w64
MSYS
Windows Subsystem for Linux - Windows純正のLinuxサブシステム
Interix (Services for UNIX)
coLinux - LinuxカーネルをWindowsアプリケーションとして動作させる
シグナスソリューションズ
Wine - Cygwinとは逆に、Unix系OSでWindowsアプリケーションを動作させる
仮想化

外部リンク



公式ウェブサイト (英語)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。