POSIX

**POSIX**（ポジックス、）は、オペレーティングシステム (OS) の標準的なインタフェースおよび環境を定義するIEEE規格である。

ソースコードレベルでの移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的として、主にUNIX系のOSに関して、各OSが共通して持つべきコマンドラインインタプリタ（シェル）、共通のユーティリティプログラム、およびアプリケーションプログラミングインタフェース (API) について定めている。

POSIX仕様に準拠したソースコードは、POSIX準拠OSであればどれでも動作させることができる。アプリケーション開発者とシステム実装者の両方から利用されることを意図している。

## 概要
### 規格の内容
POSIXのバージョンごとに、定められている項目が異なる。各バージョンで定められている項目を下に示す。

なおPOSIXにはいくつものバージョンがあるので、古い文書などで単に「POSIX」と書いてある場合は、現在「POSIX.1」(IEEE Std 1003.1) と呼ばれているものだけを指している可能性がある。

#### POSIX.1
**POSIX.1** - Core Services (Standard ANSI Cと統合) (IEEE Std 1003.1-1988)
*Process Creation and Control
*Signals
**Floating Point Exceptions（）
**Segmentation / Memory Violations 
**Illegal Instructions 
**Bus Errors
**Timers
*File and Directory Operations
*Pipes
*C Library (Standard C)
*I/O Port Interface and Control
*Process Triggers
##### 後継版
* POSIX.1 (IEEE Std 1003.1-1988)
* POSIX.1-2001 (IEEE Std 1003.1-2001)
* POSIX.1-2008 (IEEE Std 1003.1-2008)
* POSIX.1-2017 (IEEE Std 1003.1-2017) 
* POSIX.1-2024 (IEEE Std 1003.1-2024)

#### POSIX.1b
**POSIX.1b** -  Real-time extensions (IEEE Std 1003.1b-1993)
*Priority Scheduling
*Real-Time Signals
*Clocks and Timers
*Semaphores
*Message Passing
*Shared Memory
*Asynchronous and Synchronous I/O
*Memory Locking Interface

#### POSIX.1c
**POSIX.1c** - Threads extensions (IEEE Std 1003.1c-1995)　　POSIXスレッドも参照

*Thread Creation, Control, and Cleanup
*Thread Scheduling
*Thread Synchronization
*Signal Handling

#### POSIX.2
**POSIX.2** -  Shell and Utilities (IEEE Std 1003.2-1992)

*Command Interpreter
*Utility Programs

### 名称の由来
この規格は起源をさかのぼると、もともとはIEEEの規格番号やISO/IEC標準番号などで呼ばれていたものであるが、それが発展していく途中でPOSIXと改名された。最初、この一群の規格は「IEEE 1003」という名でつくられ、ISO/IEC標準での番号は「ISO/IEC 9945」だった。
1988年に「IEEE Std 1003.1-1988」と呼ばれていたころに、並行して「POSIX」という名称でも呼ばれ始めた。POSIXという名前はリチャード・ストールマンがIEEEに提案したものである。末尾の「」はUNIX互換OSに「」の字がつく名前が多いことからつけられた。IEEE側のほうも、番号で呼ぶよりもPOSIXという名称で呼んだほうが発音しやすく憶えやすいと気づき、これを採用すると決め、正式名称という位置づけとなった。

## POSIX指向のOS
POSIXの規則を守っていることを英語でPOSIX-compliant（ポジックス・コンプライアント）と言う。POSIXに適合している度合いによって、POSIX完全適合のOSからPOSIX部分適合のOSまで、多段階に分類することができる。

IEEEは開発元から申請があればそのOSがPOSIXに適合しているか審査しており、認証を受けたOSはIEEEの公式ウェブサイトで公表されている。認証プログラムのガイドラインが公式サイトに記載されている。ただし審査は有料制。

### POSIX準拠
以下に挙げるOSのいくつかのバージョンは、POSIXのいずれかのバージョンを満たすとしてIEEEから認証を受けている (POSIX-certified)。

*AIX
*HP-UX
*IRIX
*EulerOS
*macOS (10.5 Leopard以降)
*Solaris
*Tru64
*UnixWare
*QNX Neutrino
*Inspur K-UX
*INTEGRITY

### POSIXにおおむね準拠
以下に挙げるものは、IEEEから公式認証を受けてはいないが、おおむねPOSIXに準拠しているものである。

*Android
*BeOS (結果としてHaikuも含む)
*Contiki
*Darwin (macOSおよびiOSのコア)
*DragonFly BSD
*FreeBSD
*illumos
*Linux
*LynxOS
*MINIX
*MPE/iX
*NetBSD
*Nucleus RTOS
*NuttX
*OpenBSD
*OpenSolaris
*PikeOS 
* Redox
*RTEMS – POSIX API support designed to IEEE Std. 1003.13-2003 PSE52
*SkyOS
*Syllable Desktop
*VSTa
*VMware ESXi
*Xenix

TRON系のNucleus RTOSのように、Unix系OS以外でも、すべてではないがPOSIX指向のOSは存在する。

## POSIXと他の規格の関係
C言語のシステムコールとライブラリ関数を規定した規格としては、他にANSI C/ISO CとSUS（Single UNIX Specification、XPG4の後継）がある。各規格の立場の違いにより、これらが含む関数の種類には差異がある。数学の包含関係記号で表すと、ANSI/ISO C ⊂ POSIX.1 ⊂ SUSとなる。

## （参考情報）POSIX非準拠OS
*Microsoft Windows

:ただしWindows NT系は、Windows 7/Windows Server 2008 R2世代まではPOSIX 1.0に準拠しているPOSIX向けのサブシステムを搭載していて、POSIXアプリケーションをそのサブシステム上で実行できた。貿易の技術的障害に関する協定 (WTO/TBT協定) では、非関税障壁として工業製品は国際規格を尊重して仕様を規定することを提唱しているため、米国政府機関のコンピュータシステム導入要件 (連邦情報処理標準、FIPS) としてPOSIX準拠であることが規定されていたためである。Windows 2000までPOSIXサブシステムを搭載していたが、Windows XPからはServices for UNIXに同梱のInterixサブシステムに役割を譲り、Windows Server 2003 R2やWindows Vistaからは「UNIXベースアプリケーション用サブシステム」(, SUA) となった。

:しかしマイクロソフトはWindows 8およびWindows Server 2012よりSUAを非推奨とし、代替手段の一つとしてCygwinのPOSIXエミュレーションモードを紹介するようになった。

:Windows 8.1およびWindows Server 2012 R2ではSUAは完全に利用できなくなった。

:その後Windows 10では、Windows 10 version 1607以降でWSL (Windows Subsystem for Linux) を搭載したことにより、POSIX準拠のサブシステムを利用できるようになった。WSLではLinuxアプリケーションを実行することもできる。

## 脚注
### 注釈

### 出典

## 関連項目
* POSIXスレッド
* POSIX 1003.1b
* :en:C POSIX library
* Linux Standard Base
* アメリカ国立標準技術研究所
* 国際化と地域化
* 共通ロケールデータリポジトリ
* The Open Group
* Common User Access
* TRONプロジェクト

## 外部リンク
*POSIX® Certification