Solaris 2.x への移行

付録 B システムコールリファレンス

この付録では、表形式ですべての SunOS 4.x を示し、Solaris 2.6、ABI、SVID、SVR4、および SunOS/BSD ソース互換パッケージのそれぞれの環境での利用方法の違いを示します。

リファレンスの使い方

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 に設定するという点が異なります。

システムコールのリファレンス (A, B, C, D, E, F, G)

表 B-1

SunOS 4.x システムコール 

SunOS 5.6  

注 

ABI 

SVID 

SVR4 

BSD 

accept()(2)

S 

現在は accept()(3N)

N 

N 

S 

N 

access()(2V) -SysV

S 

 

S 

S 

S 

N 

acct() (2)

C# 

シンボリック名、ACOMPAT、ACORE、AXSIG は、SunOS 4.x の (<sys/acct.h> に定義されている) acct 構造体メンバ ac_flag には有効だが、SunOS 5.6、ABI、SVID、SVR4 では無効。また、アカウンティング記録のフォーマットも、SunOS 4.x と、SunOS 5.6、ABI、SVID、SVR4 との間で異なる。

C# 

C# 

C# 

N 

adjtime()(2)

S 

 

N 

S 

S 

N 

async_daemon()(2)

N 

 

N 

N 

N 

N 

audit()(2)

N 

 

N 

N 

N 

N 

auditon() (2)

N 

 

N 

N 

N 

N 

auditsvc()(2)

N 

 

N 

N 

N 

N 

bind()(2)

S 

現在は bind()(3N)

N 

N 

S 

N 

brk()(2)

S 

 

N 

N 

S 

N 

chdir() (2V) -SysV

S 

 

S 

S 

S 

N 

chmod()(2V) -SysV

C# 

シンボリックアクセスモード (<sys/stat.h>)、S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は SunOS 4.x の chmod() によってサポートさ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 

chown() (2V)

C 

SunOS 4.x では、chown() の owner および group 引数は int 型になる。SunOS 5.6、ABI、SVID、SVR4 では、owner は uid_t 型、group は gid_t 型になる。

SunOS 4.x では、path の最後の指定がシンボリックリンクならば、シンボリックリンクの所有権は変更された。SunOS 5.6 では、chown() はシンボリックリンクによって参照されるファイルまたはディレクトリの所有権を変更する。シンボリックリンクの所有権を変更するには SunOS 5.6 の lchown()(2) を使用する。

C 

C 

C 

N 

chown()(2V) -SysV

S 

 

S 

S 

S 

N 

chroot()(2)

S 

 

S 

S 

S 

N 

close()(2V) -SysV

S 

 

S 

S 

S 

N 

connect()(2)

S# 

現在はconnect()(3N)。

N 

N 

S# 

N 

creat()(2V)

C# 

SunOS 4.x では、creat() の mode 引数は int 型で、SunOS 5.6、ABI、SVID、SVR4 では、mode 引数は mode_t 型。また、SunOS 5.6、ABI、SVID、SVR4 では <fcntl.h> に含まれるが、SunOS 4.x では含まれない。シンボリックアクセスモード (<sys/stat.h>)、S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は SunOS 4.x の creat() によってサポートされるが、 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> でも定義されているので使用できる。errno フラグの ENXIO、EOPNOTSUPP は、SunOS 4.x の chmod 関数には有効だが、SunOS 5.6、ABI、SVID、SVR4 では無効。

C# 

C# 

C# 

N 

creat()(2V) -SysV

C# 

シンボリックアクセスモード (<sys/stat.h>)、S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は SunOS 4.x の creat() によってサポートされるが、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> でも定義されているので使用できる。errno フラグの ENXIO、EOPNOTSUPP は、SunOS 4.x の chmod 関数には有効だが、SunOS 5.6、ABI、SVID、SVR4 では無効。

C# 

C# 

C# 

N 

dup()(2V) -SysV

S 

 

S 

S 

S 

N 

dup2()(2V) -SysV

S 

現在は dup2()(3C)。

S 

S 

S 

N 

_exit()(2V) -SysV

S 

 

S 

S 

S 

N 

execve()(2V) -SysV

S 

 

S 

S 

S 

N 

fchdir()(2V) -SysV

S 

 

S 

S 

S 

N 

fchmod()(2V) -SysV

C 

シンボリックアクセスモード (<sys/stat.h>) の S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は SunOS 4.x の fchmod() によりサポートされるが、SunOS 5.6、ABI、SVID、SVR4 ではサポートされない。ただし、同等5.6、または ABI、SVID、SVR4 のシンボリックアクセスモードである S_IRUSR (00400)、S_IWUSR (00200)、S_IXUSR (00100) は同じ定義を持ち、SunOS 4.x の <sys/stat.h> でも定義されているので使用できる。

C 

C 

C 

N 

fchown()(2)

S 

 

S 

S 

S 

N 

fchroot()(2)

S 

 

N 

N 

N 

N 

fcntl()(2V) -SysV

C 

SunOS 4.x では、フラグ -O_APPEND、-O_SYNC、-O_NDELAY、また、<sys/file.h> に定義があるフラグ -FASYNC、-FNDELAY、-FNBIO が F_SETFL コマンドで有効となる。SunOS 5.6、ABI、SVID、SVR4 はフラグ -O_APPEND、-O_SYNC、-O_NDELAY、および -O_NONBLOCK のみサポートする。-O_SYNC は -FASYNC の代わりに使用できる。-O_NONBLOCK は -FNDELAY と -FNBIO の代わりに使用できる。また、-O_NONBLOCK は -O_NDELAY の代わりに使用できる。-O_NDELAY は削除されている。SunOS 4.x の F_GETOWN および F_SETOWN コマンドは SunOS 5.6、ABI、SVID、SVR4 ではサポートされない。

C 

C 

C 

N 

flock()(2)

N 

 

N 

N 

N 

S 

fork()(2V)

C 

SunOS 4.x では、fork() は int 型の値を返す。 SunOS 5.6、ABI、SVID、SVR4 では、fork() は pid_t 型の値を返す。また、SunOS 5.6、ABI、SVID、SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

fork()(2V) -SysV

S 

 

S 

S 

S 

N 

fpathconf()(2V) -SysV

S 

 

S 

S 

S 

N 

fstat()(2V) -SysV

S 

 

S 

S 

S 

N 

fstatfs()(2)

A 

fstatvfs()(2) に同等の機能がある。

A 

A 

A 

S 

fsync()(2)

S 

 

S 

S 

S 

N 

ftruncate()(2)

S 

現在はftruncate()(3C)

N 

N 

S 

N 

getauid()(2)

N 

 

N 

N 

N 

N 

getdents()(2)

S 

 

N 

N 

S 

N 

getdirentries()(2)

A 

getdents()(2) に同等の機能がある。

N 

N 

N 

N 

getdomainname()(2)

A 

sysinfo()(2) に同等の機能がある。

N 

N 

N 

N 

getdtablesize()(2)

A 

現在は getdtablesize()(3C)。getrlimit() で resource 引数を RLIMIT_NOFILE に設定すると同様の機能が使用できる。

A 

A 

A 

S 

getegid()(2V)

C 

SunOS 4.x では、getegid() は int 型の値を返す。SunOS 5.6、ABI、SVID、SVR4 では、getegid() は gid_t 型の値を返す。また、SunOS 5.6、ABI、SVID、SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

getegid()(2V) -SysV

S 

 

S 

S 

S 

N 

geteuid()(2V)

C 

SunOS 4.x では、geteuid() は int 型の値を返す。SunOS 5.6、ABI、SVID、SVR4 では、geteuid() は uid_t 型の値を返す。また、SunOS 5.6、ABI、SVID、SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

geteuid()(2V) -SysV

S 

 

S 

S 

S 

N 

getgid()(2V)

C 

SunOS 4.x では、getgid() は int 型の値を返す。SunOS 5.6、ABI、SVID、SVR4 では、getgid() は gid_t 型の値を返す。また、SunOS 5.6、ABI、SVID、SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

getgid()(2V) -SysV

S 

 

S 

S 

S 

N 

getgroups()(2V)

C 

SunOS 4.x では、 getgroups() の gidset 引数は int 型で、SunOS 5.6、ABI、SVID、SVR4 では grouplist 引数は gid_t 型である。また、SunOS 5.6、ABI、SVID、SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

getgroups()(2V) -SysV

S 

 

S 

S 

S 

N 

gethostid() (2)

A 

現在は gethostid()(3C)。sysinfo()(2) で command 引数を SI_HW_SERIAL に設定すると同様の機能を使用できる。

N 

N 

N 

S 

gethostname()(2)

A 

現在は gethostname()(3C)。sysinfo() (SI_HOSTNAME, name, namelen) ルーチンが同様の機能を提供する。

N 

N 

N 

S 

getitimer()(2)

S 

 

N 

S 

S 

N 

getmsg()(2)

S 

 

S 

S 

S 

N 

getpagesize()(2)

A 

現在は getpagesize()(3C)。sysconf()(3C) が同様の機能を提供する。

A 

A 

A 

S 

getpeername()(2)

S# 

現在は getpeername()(3N)。errno フラグの ENOBUFS は SunOS 4.x の getpeername() には有効だが、SVR4 と SunOS 5.6 では無効。

N 

N 

S# 

N 

getpgid()(2V)

S 

 

S 

S 

S 

N 

getpgrp()(2V)

C 

SunOS 4.x の getpgrp() には引数 pid があり、getpgrp() は pid によって示されるプロセスのプロセスグループを返す。getpgrp() の SunOS 5.6、ABI、SVID、SVR4 は引数を受け付けず、getpgrp() は呼び出し元のプロセスグループ ID を返す。また、SunOS 4.x getpgrp() は int 型の値を返すが、SunOS 5.6、ABI、SVID、または SVR4 の getpgrp() は pid_t 型の値を返す。SunOS 5.6、ABI、SVID、および SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

getpgrp()(2V) -SysV

S 

 

S 

S 

S 

N 

getpid()(2V)

C 

SunOS 4.x では、getpid() は int 型の値を返す。 SunOS 5.6、ABI、SVID、または SVR4 では、getpid() は pid_t 型の値を返す。また、SunOS 5.6、ABI、SVID、および SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

getpid()(2V) -SysV

S 

 

S 

S 

S 

N 

getppid()(2V)

C 

SunOS 4.x では、getppid() は int 型の値を5.6、ABI、SVID、または SVR4 では、getppid() は pid_t 型の値を返す。また、ABI、SVID、SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

getppid()(2V) -SysV

S 

 

S 

S 

S 

N 

getpriority()(2)

A 

現在は getpriority()(3C)。priocntl()(2) が同様の機能を提供する。

A 

A 

A 

S 

getrlimit()(2)

C 

RLIMIT_RSS は SunOS 4.x でサポートされているリソースの 1 つで (プロセスの常駐セットサイズが増大できるバイト単位の最大サイズ)、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされていない。SunOS 5.6、ABI、SVID、または SVR4 では、さらに RLIMIT_AS リソース、つまりバイト単位で定義されるプロセスのアドレス空間の最大サイズもサポートする。また、SunOS 5.6、ABI、SVID、または SVR4 での、rlimit 構造体にある rlim_cur (現在のソフト限界) および rlim_max (ハード限界) フィールドは、SunOS 4.x では int 型ではなく rlim_t 型である。

C 

C 

C 

N 

getrusage()(2)

A 

現在は getusage()(3C)。

N 

N 

N 

C 

getsockname()(2)

S# 

SunOS 4.x の getsockname() が使用する errno 値 ENOBUFS は、SVR4 と SunOS 5.6 では ENOSR に変更された。

N 

N 

S# 

N 

getsockopt()(2)

S 

現在は getsockopt()(3N)

N 

N 

S 

N 

gettimeofday()(2)

S 

現在は gettimeofda()y()(3C)

N 

S 

S 

S 

getuid()(2V)

C 

SunOS 4.x では、getuid() は int 型の値を返す。SunOS 5.6、ABI、SVID、または SVR4 では、getuid() は type uid_t の値を返す。また、SunOS 5.6、ABI、SVID、および SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

getuid()(2V) -SysV

S 

 

S 

S 

S 

N 

システムコールのリファレンス (I, K, L, M, O, P, Q)

表 B-2

SunOS 4.x システムコール 

SunOS 5.6  

注 

ABI 

SVID 

SVR4 

BSD 

ioctl()(2)

C 

「ioctl() 要求」の ioctl() 要求を参照のこと。

C 

C 

C 

N 

kill()(2V)

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 

killpg()(2)

A 

現在では killpg()(3C)。kill()(2) が同様の機能を提供する。killpg()(pgrp, sig) を kill()(-pgrp, sig) に置き換える。

 

A 

A 

A 

S 

link()(2V) -SysV

C 

SunOS 5.6、ABI、SVID、または SVR4 の link() では、最初の引数の最後の部分がシンボリックリンクならば、リンクをたどらず、シンボリックリンクへのハードリンクが作成される。

C 

C 

C 

N 

listen()(2)

S 

現在は listen()(3N)

N 

N 

S 

N 

lseek()(2V) -SysV

S 

 

S 

S 

S 

N 

lstat()(2V) -SysV

S 

 

S 

S 

S 

N 

mctl()(2)

A 

memcntl()(2) が同様の機能を提供する。

A 

A 

A 

S 

mincore()(2)

C 

SunOS 4.x では、引数 len は int 型で、SVR4 と SunOS 5.6 では、引数 len は、unsigned int 型となるように定義される size_t 型である。また、SunOS 5.6 では <unistd.h> をインクルードする必要がある。

N 

N 

C 

N 

mkdir()(2V)

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 

mkfifo()(2V) -SysV

S 

現在は mkfifo()(3C)

S 

S 

S 

N 

mknod()(2V) -SysV

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 

mmap()(2)

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 

mount()(2)

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 の引数である caddr_t data) を使用するが、SunOS 5.6、ABI、SVID、または SVR4 では 2 つのパラメータを使用する (5 と 6、つまり const char *dataptr と int datalen)。また、SunOS 5.6、ABI、SVID、SVR4 では <sys/mount.h> の前にある <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

SunOS 4.x の <sys/mount.h> は、SunOS 5.6、ABI、SVID、または SVR4 の <sys/mount.h> で定義されない mount() flags 引数 (M_NEWTYPE, M_RDONLY, M_NOSUID, M_NEWTYPE, M_GRPID, M_REMOUNT , M_NOSUB, M_MULTI) に対するシンボリック定数を定義する。かわりに、M_RDONLY を MS_RDONLY に、M_NOSUID を MS_NOSUID に、M_REMOUNT を MS_REMOUNT に置き換える必要がある。M_NEWTYPE フラグは、SunOS 4.x の mount() に固有であり、SunOS 5.6、ABI、SVID、または SVR4 では置き換える必要はない。フラグ、M_NOSUB、M_GRPID、M_MULTI の機能は、<sys/mount.h> に定義があり、SunOS 5.6、ABI、SVID、または SVR4 ではサポートされない。

SunOS 4.x の mount() は、SunOS 5.6、ABI、SVID、または SVR4 によって返されない errno 値、ENODEV、EACCES、EMFILE、ENOMEM を使用する。

 

C# 

C# 

C# 

N 

mprotect()(2)

S 

 

S 

S 

S 

N 

msgctl()(2)

S 

 

S 

S 

S 

N 

msgget()(2)

S 

 

S 

S 

S 

N 

msgrcv()(2)

S 

 

S 

S 

S 

N 

msgsnd()(2)

S 

 

S 

S 

S 

N 

msync()(2)

S 

 

S# 

S# 

S 

N 

munmap()(2)

S 

 

S 

S 

S 

N 

nfssvc()(2)

A 

このインタフェースは、nfssys()(NFS_SVC,... ) ルーチンにより、SunOS 5.6 で置き換えられる。

 

N 

N 

N 

N 

open()(2V)

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 では、O_NDELAY または O_NONBLOCK フラグがオープンするコールに設定されると、open() コール自身だけが有効にされる。SunOS 5.6、ABI、SVID、または SVR4 では、O_NDELAY または O_NONBLOCK フラグが open() へのコールに設定されると、そのファイル記述子に同等のフラグが設定され、その記述子への次の読み書きはブロックされない。

また、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 

pathconf()(2V) -SysV

S 

 

S 

S 

S 

N 

pipe()(2V) -SysV

S 

 

S 

S 

S 

N 

poll()(2)

S 

 

S 

S 

S 

N 

profil()(2)

S 

 

S 

S 

S 

N 

ptrace()(2)

C# 

SunOS 4.x の ptrace() へのオプションの addr2 引数は、SunOS 5.6 ルーチンではサポートされない。ptrace() への要求引数は、SunOS 4.x では enum ptracereq 型で、SunOS 5.6 では int() 型。ptrace() への pid 引数は、SunOS 4.x では int() 型で、SunOS 5.6 では pid_t() 型。

また、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 

putmsg()(2)

S 

 

S 

S 

S 

N 

quotactl()(2)

A 

Q_QUOTACTL ioctl() が同様の機能を提供する。

A 

A 

A 

N 

システムコールのリファレンス (R, S, T, U, V)

表 B-3

SunOS 4.x システムコール 

SunOS 5.6  

注 

ABI 

SVID 

SVR4 

BSD 

read()(2V)

C# 

errno フラグの EISDIR、EWOULDBLOCK は、SunOS 4.x の read() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。

C# 

C# 

C# 

N 

read()(2V) -SysV

C# 

read() の nbyte 引数は、SunOS 4.x では int() 型で、SunOS 5.6 では unsigned() 型である。

SunOS 5.6 の read() は、(FIONBIO ioctl() 要求、あるいは <sys/file.h> から FNDELAY フラグまたは 4.x BSD 環境の <fcntl.h> から O_NDELAY フラグを使った fcntl(2V)() へのコールがある) BSD 4.2 スタイル非ブロック I/O を、SunOS 4.x の read() ルーチンのようにはサポートしない。

errno フラグの EISDIR、EWOULDBLOCK は、SunOS 4.x の read() には有効だが、SunOS 5.6 では無効。

C# 

C# 

C# 

N 

readlink()(2)

S 

 

S 

S 

S 

N 

readv()(2)

C# 

errno フラグの EISDIR、EWOULDBLOCKは、SunOS 4.x には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。

C# 

C# 

C# 

N 

readv()(2V) -SysV

C# 

SunOS 4.x、SunOS 5.6、SVID または SVR4 の (<sys/uio.h> に定義がある) iovec 構造体はわずかに異なる。SunOS 4.x の iovec の iov_len フィールドは、integer として定義されるが、SunOS 5.6、SVID または SVR4 の iov_len は unsigned として定義される。 SunOS 5.6、SVID または SVR4 の readv() システムコールは、BSD 4.2 スタイルの非ブロック I/O を、SunOS 4.x のようにはサポートしない。

C# 

C# 

C# 

N 

reboot()(2)

A 

現在は reboot()(3C)。uadmin()(2) が同様の機能を提供する。

N 

N 

N 

S 

recv()(2)

S 

現在は recv()(3N)

N 

N 

S 

N 

recvfrom()(2)

S 

現在は recvfrom()(3N)

N 

N 

S 

N 

recvmsg()(2)

S 

現在は recvmsg()(3N)

N 

N 

S 

N 

rename()(2V) -SysV

S# 

SunOS 5.6、ABI、SVID、または SVR4 では <unistd.h> に含まれるが、SunOS 4.x では含まれない。errno フラグ ENOTEMPTY は、SunOS 4.x の rename() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。 SunOS 5.6、ABI、SVID、または SVR4 は、そのかわりにフラグ EEXIST に対して errno を設定する。

S# 

S# 

S# 

N 

rmdir()(2V) -SysV

S# 

SunOS 5.6、ABI、SVID、または SVR4 では <unistd.h> に含まれるが、SunOS 4.x では含まれない。errno フラグ ENOTEMPTY は、SunOS 4.x の rmdir() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。 SunOS 5.6、ABI、SVID、または SVR4 は、そのかわりにフラグ EEXIST に対して errno を設定する。

S# 

S# 

S# 

N 

sbrk()(2)

S 

 

N 

N 

S 

N 

select()(2)

S 

現在は select()(3C)。

N 

N 

S 

N 

semctl()(2)

S 

 

S 

S 

S 

N 

semget()(2)

S 

 

S 

S 

S 

N 

semop()(2)

S 

 

S 

S 

S 

N 

send()(2)

S# 

現在は send()(3N)。

errno フラグの ENOBUFS は、SunOS 4.x の send()(2) には有効だが、SVR4、および SunOS 5.6 では無効。

N 

N 

S# 

N 

sendmsg(2)()

S# 

現在は sendmsg()(3N)。

errno フラグの ENOBUFS は、SunOS 4.x の sendmsg()(2) には有効だが、SVR4 と SunOS 5.6 では無効。

N 

N 

S# 

N 

sendto()(2)

S# 

現在は sendto()(3N)。

errno フラグの ENOBUFS は、SunOS 4.x の sendto()(2) には有効だが、SVR4 と SunOS 5.6 では無効。

N 

N 

S# 

N 

setaudit()(2)

N 

 

N 

N 

N 

N 

setauid() (2)

N 

 

N 

N 

N 

N 

setdomainname()(2)

A 

sysinfo()(2) が同様の機能を提供する。

N 

N 

N 

N 

setgroups()(2V)

C 

SunOS 4.x では、gidset 引数は int 型で、SunOS 5.6、ABI、SVID、または SVR4 では、gidset 引数は gid_t 型になっている。また、SunOS 5.6、ABI、SVID、または SVR4 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。

C 

C 

C 

N 

setgroups()(2V) -SysV

S 

 

S 

S 

S 

N 

sethostname()(2)

A 

現在は sethostname()(3C)。sysinfo()(2) のコマンド引数を SI_SET_HOSTNAME に設定すると、同様の機能を提供する。

N 

N 

N 

S 

setitimer()(2)

S 

 

N 

S 

S 

N 

setpgid()(2V) -SysV

S 

 

S 

S 

S 

N 

setpgrp() (2V)

C 

SunOS 4.x の setpgrp() には引数 pid と pgrp があり、setpgrp() はプロセスグループを pid によって示されるプロセスの pgrp に設定する。SunOS 5.6 の setpgrp() は引数を受け付けず、setpgrp() は新しいセッションも作成する。ただし、pgrp がゼロであり、pid が呼び出し元プロセスを参照すると、SunOS 4.x の setpgrp() コールは引数なしの SunOS 5.6 の setpgrp() コールと同じになる。また、SunOS 4.x の setpgrp() は int 型の値を返すが、SunOS 5.6 では、setpgrp() は pid_t 型の値を返す。さらに、SunOS 5.6 では <unistd.h> と <sys/types.h> に含まれるが、SunOS 4.x では含まれない。errno フラグの EACCES、EINVAL、ESRCH は、SunOS 4.x の setpgrp() には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。

()

C# 

C# 

C# 

N 

setpgrp()(2V) -SysV

S 

errno フラグの EACCES、EINVAL、ESRCH は SunOS 4.x の setpgrp()(2V) には有効だが、SunOS 5.6、ABI、SVID、または SVR4 では無効。

S 

S 

S 

N 

setpriority()(2)

A 

現在は setpriority()(3C)。priocntl()(2) が同様の機能を提供する。

A 

A 

A 

S 

setregid()(2)

S 

現在は setregid()(3C)。

N 

N 

N 

C 

setreuid()(2)

S 

現在は setreuid()(3C)。

N 

N 

N 

C 

setrlimit() (2)

C 

現在は setrlimit()(2)。

C 

C 

C 

N 

setsid()(2V) -SysV

S 

 

S 

S 

S 

N 

setsockopt()(2)

S 

現在は setsockopt()(2)。

N 

N 

S 

N 

settimeofday() (2)

S 

現在は settimeofday()(2)。

N 

S 

S 

S 

setuseraudit()(2)

N 

 

N 

N 

N 

N 

sgetl()(2)

S 

現在は xdr_simple()(3N)。

N 

S 

S 

N 

shmat()(2)

S 

 

S 

S 

S 

N 

shmctl()(2)

S 

 

S 

S 

S 

N 

shmdt()(2)

S 

 

S 

S 

S 

N 

shmget()(2)

S 

 

S 

S 

S 

N 

shutdown()(2)

S 

現在は shutdown()(3N)。

N 

N 

S 

N 

sigaction()(2)

C 

Solaris 2.6 には SA_RESTART というフラグがある。このフラグを使用すると、このシグナルのハンドラの実行により割り込みされる関数がシステムにより透過的に再起動される。

N 

C 

C 

S 

sigblock()(2)

A 

how 引数を SIG_BLOCK に設定した sigprocmask()(2) が同様の機能を提供する。

A 

A 

A 

S 

sigmask() (2)

A 

sigsetops()(3C) ルーチンは、SunOS 5.6、ABI、SVID、または SVR4 が同様の機能を提供する。

A 

A 

A 

S 

sigpause()(2V) -SysV

S 

SunOS 4.x の sigpause() は、その引数 (sigmask) をマスクされたシグナルのセットに代入するが、ABI と SVID の sigpause() は、その引数 (sig) を呼び出し元プロセスのシグナルマスクから削除する。SVR4 と SunOS 5.6 の sigpause() は、SunOS 4.x の sigpause()(2) と互換性がある。

C 

C 

S 

S 

sigpending()(2V) -SysV

S 

 

S 

S 

S 

N 

sigprocmask()(2V) -SysV

S 

 

S 

S 

S 

N 

sigsetmask()(2)

A 

how 引数を SIG_SETMASK に設定した sigprocmask()(2) ルーチンは、SunOS 5.6、ABI、SVID、または SVR4 が同様の機能を提供する。

A 

A 

A 

S 

sigstack()(2)

A 

現在は sigstack()(3C)。sigaltstack(2)() が同様の機能を提供する。

A 

A 

A 

S 

sigsuspend()(2V) -SysV

S 

 

S 

S 

S 

N 

sigvec()(2)

A 

sigaction()(2) が同様の機能を提供する。

A 

A 

A 

S 

socket()(2)

C# 

現在は socket()(3N)

SunOS 4.x では、PF_IMPIPNK はサポートされた domain だが、SVR4 と SunOS 5.6 では PF_IMPIPNK はサポートされない。errno フラグの ENOBUFS、EPROTOTYPE は、SunOS 4.x の socket() には有効だが、SVR4 と SunOS 5.6 では無効。

N 

N 

C# 

N 

socketpair()(2)

S 

現在は socketpair()(3N)

N 

N 

S 

N 

sputl()(2)

S 

現在は xdr_simple()(3N)

N 

S 

S 

N 

stat()(2V) -SysV

S 

 

S 

S 

S 

N 

statfs()(2)

A 

statvfs()(2) が同様の機能を提供する。

A 

A 

A 

N 

swapon()(2)

A 

swapctl()(2) が同様の機能を提供する。

N 

N 

N 

N 

symlink()(2)

S 

 

S 

S 

S 

N 

sync()(2)

S 

 

S 

S 

S 

N 

syscall()(2)

N 

 

N 

N 

N 

S 

sysconf()(2V) -SysV

S 

現在は sysconf()(3C)

S 

S 

S 

N 

tell()(2V) -SysV

S 

 

S 

N 

S 

N 

truncate()(2)

S 

現在は truncate()(23C)

N 

N 

S 

N 

umask(2V) -SysV()

C 

シンボリックアクセスモード (<sys/stat.h>) の S_IREAD (00400)、S_IWRITE (00200)、S_IEXEC (00100) は、SunOS 4.x の umask() によってサポートされるが、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 

umount()(2V) -SysV

S 

 

S 

S 

S 

N 

uname()(2V) -SysV

S 

 

S 

S 

S 

N 

unlink()(2V) -SysV

S 

 

S 

S 

S 

N 

unmount()(2)

A 

umount()(2) が同様の機能を提供する。

A 

A 

A 

N 

ustat()(2)

S 

 

S 

S 

S 

N 

utimes()(2)

S 

 

N 

N 

N 

N 

vadvise()(2)

N 

 

N 

N 

N 

N 

vfork()(2)

S 

 

N 

N 

S 

N 

vhangup()(2)

S 

 

N 

N 

N 

N 

システムコールのリファレンス (W)

表 B-4

SunOS 4.x システムコール 

SunOS 5.6  

注 

ABI 

SVID 

SVR4 

BSD 

WEXITSTATUS()(2)

C 

union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。

N 

N 

S 

S 

WIFEXITED()(2)

C 

union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。

N 

N 

C 

S 

WIFSIGNALED()(2)

C 

union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。

N 

N 

C 

S 

WIFSTOPPED() (2)

C 

union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。

N 

N 

C 

S 

WSTOPSIG()(2)

C 

union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。

N 

N 

C 

S 

WTERMSIG()(2)

C 

union wait は、SunOS 4.x でサポートされていたが、SVR4 および SunOS 5.6 ではサポートされない。

N 

N 

C 

S 

wait()(2V)

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() は、SV_INTERRUPT ビットがそのシグナル用のフラグに設定されない限り、終了を待つ間にプロセスがシグナルを受け付けると自動的に再起動される。SunOS 5.6、ABI、SVID、または SVR4 では、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) は、 SV_INTERRUPT ビットがそのシグナル用のフラグに設定されない限り、終了を待つ間にプロセスがシグナルを受け付けると自動的に再起動される。SunOS 5.6、ABI、SVID、または SVR4 では、wait()(2) は、シグナルが受け付けられると途中で戻る。

C 

C 

C 

N 

wait3()(2V)

A 

現在は wait3()(3C)。wait()(2) と waitpid()(2) が同様の機能を提供する。

A 

A 

A 

S 

wait4()(2V)

A 

現在は wait4()(3C)。wait()(2) と waitpid()(2) が同様の機能を提供する。

A 

A 

A 

S 

waitpid()(2V)

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() は、SV_INTERRUPT ビットがそのシグナル用のフラグに設定されない限り、終了を待つ間にプロセスがシグナルを受け付けると自動的に再起動される。SunOS 5.6、ABI、SVID、または SVR4 では、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) は、SV_INTERRUPT ビットがそのシグナル用のフラグに設定されない限り、終了を待つ間にプロセスがシグナルを受け付けると自動的に再起動される。SunOS リリース 5.6、ABI、SVID、または SVR4 では、waitpid()(2) は、シグナルが受け付けられると途中で戻る。

C 

C 

C 

N 

write()(2V)

C# 

SunOS 4.x ソフトウェアでは、記述子の参照が非ブロック I/O の場合、ioctl() の FIONBIO 要求を使用するか、FNDELAY や O_NDELAY フラグのセットのため fcntl() を使用することにより、write() は -1 を返して errno に EWOULDBLOCK を設定する。

SunOS 5.6 ソフトウェアでは、通常ファイルへの write() では、O_NDELAY または O_NONBLOCK が設定されていれば、write() は -1 を返して errno に EAGAIN を設定する。

O_NONBLOCK または O_NDELAY が設定されているパイプまたは FIFO への write() 要求では、write() はプロセスをブロックしない。プロセスをブロックしないで書き込むことができるデータがある場合、write() は書き込みできるものを書き込み、書き込まれたバイト数を返す。それ以外の場合は、O_NONBLOCK が設定されると -1 を戻して errno に EAGAIN を設定し、O_NDELAY が設定されると 0 を返す。O_NDELAY が設定されると、{ PIPE_BUF} またはそれ以下のバイト数の write() 要求は、完全に正常終了して nbytes を返すか、または 0 を返す。

{PIPE_BUF} バイトより大きな write() 要求は、転送できるものを転送して書き込まれたバイト数を返すか、またはデータを転送しないで 0 を返す。また、要求が {PIPE_BUF} バイトよりも大きく、以前にパイプに書き込まれたデータがすべて読み出されている場合、write() は少なくとも {PIPE_BUF} バイトを転送する。SunOS 5.6 の write() ルーチンは、4.2 BSD スタイルの非ブロック I/O をサポートしない。

 

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 

writev()(2V)

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