Go to main content

マニュアルページ セクション 7: 標準、環境、マクロ、文字セット、その他

印刷ビューの終了

更新: 2018年8月8日
 
 

POSIX.1 (7)

名前

standards, ANSI, C, C++, ISO, POSIX, POSIX.1, POSIX.2, SUS, SUSv2, SUSv3, SUSv4, SVID, SVID3, XNS, XNS4, XNS5, XPG, XPG3, XPG4, XPG4v2, XPG5, XPG6, XPG7 - SunOS 5.12 でサポートされている標準および仕様

説明

SunOS 5.12 は、The Open Group の UNIX V7 Product Standard に準拠しているので、POSIX.1-2008、UNIX V7、XPG7、または SUSv4 (Single UNIX Specification, Version 4) と一般に呼ばれる IEEE Std 1003.1-2008 をサポートしています。POSIX.1-2008 は、IEEE Std 1003.1-2008 であると同時に The Open Group Technical Standard Base Specifications, Version 7 でもあります。なお、SUSv4 には IEEE Std 1003.1-2008 と ISO/IEC 9945:2009 (Portable Operating System Interface (POSIX) Base Specifications, Issue 7) が含まれています。新しいコードは UNIX V7 標準を使って記述するべきです。SunOS または Oracle Solaris のどのリリースが特定の標準に最初に準拠したかや、以前のバージョンの Oracle Solaris でコンパイルされたコードを実行するとどうなるかの履歴情報については、このマニュアルページの最後のセクションを参照してください。

Oracle Developer Studio 12.5 C コンパイラ、または SunOS 5.12 に付属する最新バージョンの GCC または LLVM/Clang を使用する場合、SunOS 5.12 は次の標準をサポートします。

  • ANSI X3.159-1989 Programming Language - C および ISO/IEC 9899:1990Programming Language - C (C) interfaces

  • ISO/IEC 9899:1990 Amendment 1:1995: C Integrity

  • ISO/IEC 9899:1999 Programming Languages – C

  • INCITS/ISO/IEC 9899:2011 Programming Languages – C

Oracle Solaris Studio または Oracle Developer Studio C++ をインストールした場合、サポートされる C++ 標準については、そのドキュメントを参照してください。

ネットワークについては、XNS4 仕様は ILP32 (32 ビット) 環境での使用に関してのみ安全であり、LP64 (64 ビット) アプリケーション環境で使用するべきではありません。LP64 (64 ビット) アプリケーション環境では XNS5 または SUSv3 を使用してください。これらの標準には、ILP32 環境と LP64 環境にわたって移植可能な、クリーンな LP64 インタフェースが含まれているからです。SunOS 5.12 は ILP32 環境と LP64 環境の両方をサポートします。Oracle Solaris の将来のリリースでは LP64 環境のみがサポートされる可能性があります。

準拠

デフォルトの Oracle Solaris インストールを SUSv4 に完全に準拠させるには、追加のステップが必要になる場合があります。

パッケージ

XPG7 Conformance グループパッケージと Oracle Solaris Studio をインストールする必要があります。

Package                                                 Publisher
----------------------------------------------------------------------
pkg:/group/feature/xpg7                                 solaris
----------------------------------------------------------------------
pkg://solarisstudio/developer/developerstudio-125/cc    solarisstudio
ファイルシステム

デフォルトのルートファイルシステムである ZFS は通常、SUSv4 に準拠します。ただし次の特殊な場合には、ZFS は準拠要件を満たしません。

  • ZFS ファイルシステム容量統計の更新。

  • ほぼいっぱいになっているファイルシステムでの既存データの変更または削除。

SUSv4 への厳格な準拠を期待するアプリケーションの場合、UFS 上でアプリケーションを実行する必要があるほか、ZFS zvol デバイス上に UFS ファイルシステムを設定する必要もあります。

ユーティリティー

POSIX.1-2008 に必要な動作が Solaris ユーティリティーの履歴動作と競合した場合、そのユーティリティーの元の Solaris バージョンは変更されず、標準に準拠したバージョンが /usr/xpg7/bin で提供されます。標準の以前のバージョンに関する詳細な履歴情報については、このマニュアルページの最後を参照してください。

POSIX.1-2008 標準に準拠したユーティリティーを使用するアプリケーションは、適切なユーティリティーを取得するために、PATH (sh(1) または ksh(1)) または path (csh(1)) 環境変数を設定して、次に示されているディレクトリを指定されている順序で指定する必要があります。以前のバージョン向けにディレクトリを指定する方法についての詳細な履歴情報については、このマニュアルページの最後を参照してください。

POSIX.1-2008、SUSv4
  1. /usr/xpg7/bin

  2. /usr/xpg6/bin

  3. /usr/xpg4/bin

  4. /usr/bin

  5. 使用しているコンパイラのバイナリを含むディレクトリ

  6. アプリケーションで必要なバイナリを含むほかのディレクトリ

PATH/path 変数の設定が完了したら、getconf コマンドを使ってその設定を確認できます。

アプリケーションが execlp() 関数、execvp() 関数、または execvpe() 関数を使用してシェルファイルを実行したり、system(3C) 関数を使用したりする場合に、シェルファイルの解釈に使用されるシェルは、呼び出し元が準拠する標準に応じて変わります。詳細は、exec(2) のマニュアルページを参照してください。

標準
使用されるシェル
POSIX.1-2008、SUSv4、XPG7
/usr/xpg4/bin/sh
標準が指定されていない
/usr/bin/sh

機能テストマクロ

機能テストマクロは、C 標準で指定されている機能セット以外で求められる追加の機能セットを示すために、アプリケーションによって使用されます。アプリケーションが特定の標準 (POSIX や SUSv4 など) で定義されているインタフェースおよびヘッダーのみを使用する場合、そのアプリケーションは、その標準で指定されている適切な機能テストマクロを定義するだけで済みます。アプリケーションがその標準で定義されていないインタフェースおよびヘッダーを使用している場合は、適切な標準の機能テストマクロの定義に加えて、__EXTENSIONS__ も定義する必要があります。__EXTENSIONS__ を定義すると、アプリケーションには、指定された標準と競合していないすべてのインタフェースおよびヘッダーへのアクセスが提供されます。アプリケーションは、__EXTENSIONS__ をコンパイルのコマンド行か、またはアプリケーションのソースファイル内のどちらかで定義する必要があります。

POSIX.1-2008

POSIX.1-2008 準拠アプリケーションとして設計されたアプリケーションは、いずれかのヘッダーをインクルードする前に、機能テストマクロ _POSIX_C_SOURCE=200809L を定義する必要があります。アプリケーション作成者は、標準を確認して、目的のオプションが実装によってサポートされているかどうかを確認するために照会できるほかのマクロを探す必要があります。

SUSv4

SUSv4 仕様に準拠するアプリケーションをビルドまたはコンパイルするには、そのアプリケーションに _XOPEN_SOURCE=700 が定義されている必要があります。アプリケーションに SUS 機能と POSIX 機能の両方が必要な場合、そのアプリケーションは POSIX.1-2008 機能テストマクロを設定する必要はありません。

1989 ANSI C、1990 ISO C、1999 ISO C、2011 ISO C

アプリケーションが C アプリケーションに準拠していることを示すためにどの機能テストマクロも定義する必要はありません。

ANSI/ISO C++

ANSI/ISO C++ では、機能テストマクロが定義されていません。コンパイラのデフォルト設定とコマンド行オプションに基づいてコンパイラによって事前に定義されている標準 C++ の通知マクロ __cplusplus が 199711 以上の値に設定されている場合、コンパイラは標準に準拠したモードで動作し、C++ 標準への準拠を示します。このマクロに設定可能な値やサポートされる C++ 標準のバージョンについては、C++ コンパイラのドキュメントを参照してください。

POSIX や SUSv4 では C++ バインディングが定義されていないため、_POSIX_SOURCE_POSIX_C_SOURCE_XOPEN_SOURCE などの機能テストマクロを指定すると、標準 C++ とこれらの仕様の競合する要件のためにコンパイルエラーになる場合があります。

Oracle Developer Studio 12.5 コンパイラでのコンパイル

Oracle Developer Studio 12.5 C コンパイラではデフォルトで、INCITS/ISO/IEC9899:2011 (2011 ISO C Language) 標準に準拠したコンパイルシステムが提供されます。また、INCITS/ISO/IEC 9899:1999 (1999 ISO C Language) 標準に準拠したコンパイルシステムも提供されます。

XNS5 に準拠するアプリケーションでは、すべてのリンク/ロードコマンド行に –l xnet XNS を含める必要があります。

コンパイラが redefine_extname プラグマ機能をサポートする場合、Oracle Developer Studio 12.5 C コンパイラと Oracle Solaris Studio 12.5 C++ コンパイラは、この機能がサポートされることを示すためにマクロ __PRAGMA_REDEFINE_EXTNAME を定義します。前述の条件が満たされた場合、標準ヘッダーは #pragma redefine_extname ディレクティブを使って関数名をライブラリエントリポイント名に適切にマッピングします。このマッピングによって、ISO C、POSIX、および X/Open の名前空間予約に対する完全なサポートが提供されます。

Oracle Developer Studio 12.5 C コンパイラを使用する場合は、POSIX. 1-2008 に準拠するアプリケーションを、次の表に示されているユーティリティーとフラグを使用してコンパイルするようにしてください。

Specification    Compiler/Flags    Feature Test Macros
----------------------------------------------------------
POSIX.1-2008     c99               _POSIX_C_SOURCE=200809L
----------------------------------------------------------
SUSv4            c99               _XOPEN_SOURCE=700

履歴: POSIX 標準

Oracle Solaris は以前、IEEE Std 1003.1 と IEEE Std 1003.2 (一般にはそれぞれ POSIX.1 と POSIX.2 と呼ばれている) をサポートしていました。次の表は、これらの標準の各バージョンと簡単な説明、およびそれに最初に準拠した SunOS または Solaris リリースを示しています。

POSIX                            Standard                            Description Release
-----------------------------------------------------------------------------------------
POSIX.1-1988                 system interfaces and headers           SunOS 4.1
-----------------------------------------------------------------------------------------
POSIX.1-1990                 POSIX.1-1988 update                     Solaris 2.0
-----------------------------------------------------------------------------------------
POSIX.1b-1993                realtime extensions                     Solaris 2.4
-----------------------------------------------------------------------------------------
POSIX.1c-1996                threads extensions                      Solaris 2.6
-----------------------------------------------------------------------------------------
POSIX.2-1992                 shell and utilities                     Solaris 2.5
-----------------------------------------------------------------------------------------
POSIX.2a-1992                interactive shell and utilities         Solaris 2.5
-----------------------------------------------------------------------------------------
POSIX.1-2001                 POSIX.1-1990, POSIX.1b-1993, 
                             POSIX.1c-1996, POSIX.2-1992,
                             and POSIX.2a-1992 updates               Solaris 10

-----------------------------------------------------------------------------------------
POSIX.1-2004                 POSIX.1-2001 update                     Oracle Solaris 11

履歴: X/Open Common Applications Environment (CAE)

Oracle Solaris はまた、X/Open Common Applications Environment (CAE) Portability Guide Issue 3 (XPG3) および Issue 4 (XPG4)、Single UNIX Specification (SUS、XPG4v2 とも言う)、Single UNIX Specification, Version 2 (SUSv2)、Single UNIX Specification, Version 3 (SUSv3)、および Single UNIX Specification, Version 4 (SUSv4) も以前はサポートしていました。XPG4 と SUS のどちらにも、Networking Services Issue 4 (XNS4) が含まれています。SUSv2 には、Networking Services Issue 5 (XNS5) が含まれています。

次の表は、各 X/Open 仕様と簡単な説明、およびそれに最初に準拠した SunOS または Solaris リリースを示しています。

X/Open                          Specification                            Description Release
----------------------------------------------------------------------------------------------
XPG3                            superset of POSIX.1-1988 contain-        SunOS 4.1
                                ing utilities from SVID3
----------------------------------------------------------------------------------------------
XPG4                            superset of POSIX.1-1990,                Solaris 2.4
                                POSIX.2-1992, and POSIX.2a-1992
                                containing extensions to POSIX
                                standards from XPG3
----------------------------------------------------------------------------------------------
SUS (XPG4v2)                    superset of XPG4 containing his-         Solaris 2.6
                                torical BSD interfaces widely
                                used by common application packages
----------------------------------------------------------------------------------------------
XNS4                            sockets and XTI interfaces               Solaris 2.6
----------------------------------------------------------------------------------------------
SUSv2                           superset of SUS extended to sup-         Solaris 7
                                port POSIX.1b-1993,
                                POSIX.1c-1996, and ISO/IEC 9899
                                (C Standard) Amendment 1
----------------------------------------------------------------------------------------------
XNS5                            superset and LP64-clean deriva-          Solaris 7
                                tive of XNS4.
----------------------------------------------------------------------------------------------
SUSv3                           same as POSIX.1-2001                     Solaris 10

履歴: その他

Solaris リリース 7 から SunOS 5.12 までは、ILP32 環境と LP64 環境の両方をサポートしています。Oracle Solaris の将来のリリースでは LP64 環境のみがサポートされる可能性があります。

Solaris リリース 2.0 から SunOS 5.12 までは、System V Interface Definition, Third Edition, Volumes 1 - 4 (SVID3) で指定されたインタフェースをサポートしています。この仕様 (UNIX Systems Laboratories) の開発者はすでに活動しておらず、またこの仕様は POSIX および X/Open CAE 仕様に従っているため、現在この仕様に準拠するには何が必要かについてはなんらかの意見の不一致があることに注意してください。

Solaris リリース 7 - 10 は、The Open Group の UNIX 98 Product Standard に準拠するようにブランド化されました。Solaris 10 から Oracle Solaris 11 までは、The Open Group の UNIX 03 Product Standard に準拠するようにブランド化されました。

履歴: ユーティリティー

POSIX.2、POSIX.2a、XPG4、SUS、または SUSv2 に必要な動作が Solaris ユーティリティーの履歴動作と競合した場合、そのユーティリティーの元の Solaris バージョンは変更されず、標準に準拠したバージョンが /usr/xpg4/bin で提供されました。POSIX.1–2001 または SUSv3 に必要な動作が Solaris ユーティリティーの履歴動作と競合した場合、標準に準拠したバージョンは /usr/xpg4/bin または /usr/xpg6/bin で提供されました。POSIX.1-2001 または SUSv3 に必要な動作が POSIX.2、POSIX.2a、SUS、または SUSv2 と競合した場合、標準に準拠したバージョンが /usr/xpg6/bin で提供されました。

標準に準拠したユーティリティーを使用するアプリケーションは、適切なユーティリティーを取得するために、PATH (sh(1) または ksh(1)) または path (csh(1)) 環境変数を設定して、次に示されているディレクトリを指定されている順序で指定する必要があります。

SVID3、XPG3
  1. /usr/bin

  2. 使用しているコンパイラのバイナリを含むディレクトリ

  3. アプリケーションで必要なバイナリを含むほかのディレクトリ

POSIX.2、POSIX.2a、SUS、SUSv2、XPG4
  1. /usr/xpg4/bin

  2. /usr/bin

  3. 使用しているコンパイラのバイナリを含むディレクトリ

  4. アプリケーションで必要なバイナリを含むほかのディレクトリ

POSIX.1–2001、SUSv3
  1. /usr/xpg6/bin

  2. /usr/xpg4/bin

  3. /usr/bin

  4. 使用しているコンパイラのバイナリを含むディレクトリ

  5. アプリケーションで必要なバイナリを含むほかのディレクトリ

アプリケーションが execlp() 関数または execvp() 関数を使用してシェルファイルを実行したり、system(3C) 関数を使用したりする場合に、シェルファイルの解釈に使用されるシェルは、呼び出し元が準拠する標準に応じて変わります。詳細は、exec(2) のマニュアルページを参照してください。

標準
使用されるシェル
POSIX.1 (1990-2008)、SUS、SUSv2、SUSv3、SUSv4、XPG4、XPG5、XPG6、POSIX.1 (1988)、SVID3、XPG3、
/usr/xpg4/bin/sh

履歴: 機能テストマクロ

前述したように、機能テストマクロは、C 標準で指定されている機能セット以外で求められる追加の機能セットを示すために、アプリケーションによって使用されます。POSIX.1-2008 より前のバージョンの POSIX、SUSv4 より前の X/Open CAE、および SVID3 に関する履歴情報の概要を、次に示します。

POSIX

次の表に、以前のバージョンの POSIX に対する機能テストマクロの一覧を示します。

POSIX 標準
機能テストマクロ
POSIX.1-1990
_POSIX_SOURCE
POSIX.1-1990 および POSIX.2-1992 C-Language Bindings Option
_POSIX_SOURCE および _POSIX_C_SOURCE=2
POSIX.1b-1993
_POSIX_C_SOURCE=199309L
POSIX.1c-1996
_POSIX_C_SOURCE=199506L
POSIX.1-2001
_POSIX_C_SOURCE=200112L
X/Open CAE

次の表に、以前のバージョンの X/Open CAE 仕様に対するガイドラインの一覧を示します。

仕様
手順
XPG3
アプリケーションは、_XOPEN_SOURCE を定義する必要があります。_XOPEN_SOURCE がある値で定義されている場合、その値は 500 未満である必要があります
XPG4
アプリケーションは _XOPEN_SOURCE を定義し、_XOPEN_VERSION=4 を設定する必要があります。_XOPEN_SOURCE がある値で定義されている場合、その値は 500 未満である必要があります
SUS (XPG4v2)
アプリケーションは、_XOPEN_SOURCE を定義し、_XOPEN_SOURCE_EXTENDED=1 を設定する必要があります。_XOPEN_SOURCE がある値で定義されている場合、その値は 500 未満である必要があります
SUSv2
アプリケーションは、_XOPEN_SOURCE=500 を定義する必要があります
SUSv3
アプリケーションは、_XOPEN_SOURCE=600 を定義する必要があります
SVID3

SVID3 仕様は、アプリケーションが SVID3 の要件を満たすように記述されていることを示すためにどの機能テストマクロも指定しません。SVID3 仕様は、C 標準が完成する前に記述されました。

関連項目

csh(1)ksh(1)sh(1)exec(2)sysconf(3C)system(3C)environ(7)lf64(7)