この付録では、表形式ですべての SunOS 4.x を示し、Solaris 2.6、ABI、SVID、SVR4、および SunOS/BSD ソース互換パッケージのそれぞれの環境での利用方法の違いを示します。
インタフェースに C (変更) とマークされている場合、SunOS 4.x コマンドと Solaris 2.6 コマンドとの違いについて簡単な説明があります。
インタフェースに S (同じ) とマークされている場合、Solaris 2.6 インタフェースは SunOS 4.x インタフェースの機能をすべてサポートします。場合によってはインタフェースは拡張されていますが、これは SunOS 4.x インタフェースの完全なスーパーセットと考えることができます。現在は多くのシステムコールがライブラリルーチンとして利用できます。注の欄には新しいルーチンのマニュアルページの参照先を示してあります。
インタフェースに A (置換) とマークされている場合、注の欄を読んでください。
インタフェースに N (利用不可) とマークされている場合、そのインタフェースは利用できません。
標準ではサポートされていない errno 値をインタフェースが含む場合、「#」で示します。errno の違いは必ずしも互換性を損ないません。ただし、EDQUOT、EFAULT、EIO は ABI または SVID に関して表示されていないことがありますが、errno 値は必要に応じて ABI または SVID 準拠システムによりサポートされます。
SunOS 4.x には、System V 互換バージョンの多くのコマンド、システムコール、およびルーチンを提供する System V のインストールオプションがあります。System V インタフェースはこのあとに続く表に一覧表示されています。SunOS 4.x インタフェースの System V バージョンを指す場合には、「SysV」とインタフェースの横に示してあります。
すべての Solaris 2.6 インタフェースに関する詳細な情報については、『SunOS Reference Manual』のセクション 2「System Calls」を参照してください。
システムコールは関数です。この付録では、関数名のすぐ後に空の()をつけて関数を識別しています。数字を入れた()がさらに続く場合、これは関連するマニュアルページのセクションを示します。
以下の表にエントリの例と、その説明を示します。
SunOS 4.x システムコール |
SunOS 5.6 |
利用可能な代替システムコールと注 |
ABI |
SVID |
SVR4 |
BSD |
---|---|---|---|---|---|---|
mctl()(2) |
A |
memcntl()(2) が同様の機能を提供する。 |
A |
A |
A |
S |
mctl() システムコールは、ABI、SVID、SVR4、および SunOS 5.6 では利用できません。memcntl() コールを使用するには、このシステムコールを使用するアプリケーションをすべて書き直さなければなりません。mctl() は SunOS/BSD 互換パッケージで利用できますが、使用するアプリケーションは他の SVR4 システムと互換性がありません。
SunOS 4.x システムコール |
SunOS 5.6 |
利用可能な代替システムコールと注 |
ABI |
SVID |
SVR4 |
BSD |
---|---|---|---|---|---|---|
getsockname()(2) |
S# |
SunOS 4.x の getsockname() が使用する errno 値 ENOBUFS は、SVR4 と SunOS 5.6 では ENOSR に変更された。 |
N |
N |
S# |
N |
getsockname() システムコールは、ABI または SVID では定義されていません。SunOS 5.6 と SVR4 における getsockname() は SunOS 4.x のものと同じですが、SunOS 4.x ではエラー条件について errno を ENOBUFS に設定していたのに対し、SunOS 5.6 では errno を ENOSR に設定するという点が異なります。
SunOS 4.x システムコール |
SunOS 5.6 |
注 |
ABI |
SVID |
SVR4 |
BSD |
---|---|---|---|---|---|---|
C |
「ioctl() 要求」の ioctl() 要求を参照のこと。 |
C |
C |
C |
N |
|
C |
SunOS 4.x では、プロセスのグループにシグナルが送られ (同様に、pid が 0 または負であれば)、そしてシグナルを送るプロセスがそのグループのメンバであれば、そのシグナルは送り元のプロセスには送られない。SunOS 5.6、ABI、SVID、または SVR4 では、シグナルは送り元のプロセスにも送られる。SunOS 4.x では、pid 引数は int 型で、SunOS 5.6、ABI、SVID、または SVR4 では、pid 引数は pid_t 型である。また、SunOS 5.6、ABI、SVID、SVR4 では <sys/types.h> に含まれるが、SunOS 4.x では含まれない。 |
C |
C |
C |
N |
|
kill()(2V) -SysV |
S |
|
S |
S |
S |
N |
A |
現在では killpg()(3C)。kill()(2) が同様の機能を提供する。killpg()(pgrp, sig) を kill()(-pgrp, sig) に置き換える。
|
A |
A |
A |
S |
|
C |
SunOS 5.6、ABI、SVID、または SVR4 の link() では、最初の引数の最後の部分がシンボリックリンクならば、リンクをたどらず、シンボリックリンクへのハードリンクが作成される。 |
C |
C |
C |
N |
|
S |
現在は listen()(3N) |
N |
N |
S |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
A |
A |
A |
A |
S |
||
C |
SunOS 4.x では、引数 len は int 型で、SVR4 と SunOS 5.6 では、引数 len は、unsigned int 型となるように定義される size_t 型である。また、SunOS 5.6 では <unistd.h> をインクルードする必要がある。 |
N |
N |
C |
N |
|
C |
SunOS 4.x では、モード引数は int 型で、SunOS 5.6、ABI、SVID、または SVR4 ではモード引数は mode_t 型である。また、SunOS 5.6、あるいは ABI、SVID、SVR4 では <sys/types.h> と <sys/stat.h> に含まれるが、SunOS 4.x では含まれない。 シンボリックアクセスモード (<sys/stat.h>) の S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は SunOS 4.x の mkdir() によってサポートされるが、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。ただし、同等の SunOS 5.6、ABI、SVID、および SVR4 のシンボリックアクセスモードである S_IRUSR (00400)、S_IWUSR (00200)、S_IXUSR (00100) には同じ定義があり、SunOS 4.x の <sys/stat.h> にも定義があるため、使用することができる。 |
C |
C |
C |
N |
|
mkdir()(2V) -SysV |
C |
シンボリックアクセスモード (<sys/stat.h>) の S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は SunOS 4.x の mkdir() によってサポートされるが、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。ただし、同等の SunOS 5.6、ABI、SVID、および SVR4 のシンボリックアクセスモードである S_IRUSR (00400)、S_IWUSR (00200)、S_IXUSR (00100) には同じ定義があり、SunOS 4.x の <sys/stat.h> にも定義があるため、使用することができる。 |
C |
C |
C |
N |
S |
現在は mkfifo()(3C) |
S |
S |
S |
N |
|
C |
mknod() の mode 引数は、SunOS 4.x では int 型で、SunOS 5.6、ABI、SVID、または SVR4 では mode_t 型である。dev 引数は、SunOS 4.x では int 型で、 SunOS 5.6、ABI、SVID、または SVR4 では dev_t 型である。シンボリックアクセスモード (<sys/stat.h>) の S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は、SunOS 4.x の mknod() によってサポートされるが、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。ただし、同等の SunOS 5.6、ABI、SVID、または SVR4 のシンボリックアクセスモードである S_IRUSR (00400)、S_IWUSR (00200)、S_IXUSR (00100) には同じ定義があり、SunOS 4.x の <sys/stat.h> にも定義があるため、使用することができる。 |
C |
C |
C |
N |
|
C |
SunOS 4.x では、-mmap フラグオプションの値に、<sys/mman.h> で定義されている MAP_TYPE が含まれており、この MAP_TYPE は SunOS 5.6、ABI、SVID、または SVR4 の <sys/mman.h> では定義されていない。 |
C |
C |
C |
N |
|
C# |
SunOS 4.x の mount() と、SunOS 5.6、ABI、SVID、SVR4 の mount() は、多くの点で互換性がない。SunOS 4.x の最初の引数 type はファイルシステム形式の名前だが、SunOS 5.6、ABI、SVID、または SVR4 では、最初の引数は fs であり、ファイルシステムの名前である。SunOS 5.6、ABI、SVID、または SVR4 では、ファイルシステム形式の名前 fstype は、mount() の第 4 引数となる。SunOS 4.x では、形式に固有な引数を渡すのに 1 つのパラメータ (第 4 の引数である SunOS 4.x の <sys/mount.h> は、SunOS 5.6、ABI、SVID、または SVR4 の <sys/mount.h> で定義されない mount() flags 引数 ( SunOS 4.x の mount() は、SunOS 5.6、ABI、SVID、または SVR4 によって返されない errno 値、ENODEV、EACCES、EMFILE、ENOMEM を使用する。
|
C# |
C# |
C# |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S# |
S# |
S |
N |
|
S |
|
S |
S |
S |
N |
|
A |
このインタフェースは、nfssys()(
|
N |
N |
N |
N |
|
C# |
open() への mode 引数は、SunOS 4.x ソフトウェアでは int 型で、SunOS 5.6、ABI、SVID、または SVR4 では mode_t 型である。SunOS 4.x では、path 引数が空の文字列ならば、カーネルは、この空のパス名をカレントディレクトリ「.」にマップする。SunOS 5.6、ABI、SVID、または SVR4 では、path が空の文字列を指す場合、エラーが発生する。SunOS 4.x では、 また、SunOS 5.6、ABI、SVID、SVR4 では <sys/types.h> と <sys/stat.h> に含まれるが、SunOS 4.x では含まれない。 errno 値 EOPNOTSUPP は、SunOS 4.x の open() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では返されない。
|
C# |
C# |
C# |
N |
|
open()(2V) -SysV |
S# |
errno 値 EOPNOTSUPP は、SunOS 4.x の open() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では返されない。 |
S# |
S# |
S# |
N |
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
S |
|
S |
S |
S |
N |
|
C# |
SunOS 4.x の ptrace() へのオプションの addr2 引数は、SunOS 5.6 ルーチンではサポートされない。ptrace() への要求引数は、SunOS 4.x では enum また、SunOS 4.x では <sys/types.h> に含まれるが、SunOS 5.6 では <signal.h>、<sys/ptrace.h>、および <sys/wait.h> に含まれる。 errno フラグの EPERM は、SunOS 4.x の ptrace()) には有効だが、SunOS 5.6 では無効。 有効な request 値に関する情報については、「ptrace() 要求値」を参照のこと。 |
C# |
C# |
C# |
N |
|
S |
|
S |
S |
S |
N |
|
A |
A |
A |
A |
N |
SunOS 4.x システムコール |
SunOS 5.6 |
注 |
ABI |
SVID |
SVR4 |
BSD |
---|---|---|---|---|---|---|
C |
union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。 |
N |
N |
S |
S |
|
C |
union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。 |
N |
N |
C |
S |
|
C |
union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。 |
N |
N |
C |
S |
|
C |
union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。 |
N |
N |
C |
S |
|
C |
union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。 |
N |
N |
C |
S |
|
C |
union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。 |
N |
N |
C |
S |
|
C |
SunOS 4.x では、wait() は int 型の値を返す。SunOS 5.6、ABI、SVID、または SVR4 では、wait() は pid_t 型の値を返す。また、SunOS 5.6、ABI、SVID、SVR4 では <sys/types.h> に含まれるが、SunOS 4.x では含まれない。union wait は、以前の SunOS との下位互換性のために SunOS 4.x でサポートされていたが、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。SunOS 4.x では、wait() は、 |
C |
C |
C |
N |
|
wait()(2V) -SysV |
C |
union wait は、SunOS 4.x でサポートされていたが、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。SunOS 4.x では、wait()(2V) は、 |
C |
C |
C |
N |
A |
A |
A |
A |
S |
||
A |
A |
A |
A |
S |
||
C |
SunOS 4.x では、waitpid() は int 型の値を返す。SunOS 5.6、ABI、SVID、または SVR4 では、waitpid() は pid_t 型の値を返す。 waitpid() の pid 引数は、SunOS
4.x では int 型で、SunOS 5.6、ABI、SVID、または SVR4 では pid_t 型となっている。また、SunOS 5.6、ABI、SVID、SVR4 では <sys/types.h> に含まれるが、SunOS 4.x では含まれない。union wait は、以前の SunOS との下位互換性のために SunOS 4.x でサポートされていたが、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。SunOS 4.x では、waitpid() は、 |
C |
C |
C |
N |
|
waitpid()(2V) -SysV |
C |
union wait は、SunOS 4.x でサポートされていたが、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。SunOS 4.x では、waitpid()(2V) は、 |
C |
C |
C |
N |
C# |
SunOS 4.x ソフトウェアでは、記述子の参照が非ブロック I/O の場合、ioctl() の FIONBIO 要求を使用するか、 SunOS 5.6 ソフトウェアでは、通常ファイルへの write()
では、
{
errno フラグの EWOULDBLOCK は、SunOS 4.x の write() には有効だが、SunOS 5.6 では無効。 |
C# |
C# |
C# |
N |
|
write()(2V) -SysV |
C# |
SunOS 5.6、ABI、SVID、または SVR4 の write() は、4.2 BSD スタイルの非ブロック I/O をサポートしない。errno フラグの EWOULDBLOCK は、SunOS 4.x の write() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。 |
C# |
C# |
C# |
N |
C# |
SunOS 5.6、ABI、SVID、または SVR4 の writev() は、4.2 BSD スタイルの非ブロック I/O をサポートしない。errno フラグの EWOULDBLOCK は、SunOS 4.x の writev() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。 |
C# |
C# |
C# |
N |