Previous Contents Next
Chapter 21 The unix library: Unix system calls

unix ライブラリを使うと Objective Caml プログラムから多くの Unix システムコールや、システムに関係したライブラリ関数を使用することができるようになります。この章では関数を簡潔に解説しています。これらの関数の動作について詳しいことは Unix マニュアルのセクション 2 や 3 を参照してください。

すべての種類の Unix でこれらの関数すべてを利用可能とは限りません。使用できない関数がある場合、その関数を呼ぶと例外 Invalid_arg が発生します。

unix ライブラリを使用するプログラムは以下のようにリンクしてください。
        ocamlc other options unix.cma other files
        ocamlopt other options unix.cmxa other files
unix ライブラリを対話式システムで利用する場合は以下のようにしてください。
        ocamlmktop -o mytop unix.cma
        ./mytop
(C ライブラリのダイナミックリンクをサポートしているプラットフォームでは) ocaml を起動したあと #load "unix.cma";; と打っても構いません。

  MacOS:
MaxOS 版 Objective Caml では Unix システムコールを相当完璧にエミュレーションしたものが提供されています。MacOS 環境でサポートされていない関数についての詳しい情報はこの章の最後にあります。
  Windows:
Windows 版 Objective Caml では Unix システムコールを相当完璧にエミュレーションしたものが提供されています。Windows 環境でサポートされていない関数についての詳しい情報はこの章の最後にあります。


  MacOS:
MacOS 環境では、Unix ライブラリはトップレベルアプリケーションでのみ使用可能です。MPW ツールでは使用できません。以下の関数は MacOS では一部又は全部が実装されていません。ここに記載されていない関数は完全に実装されていて、この章ですでに解説したように動作します。
Functions Comment
chown, fchown 実装されていません。
chroot 実装されていません。
environment, putenv 実装されていません。
execv, execve, execvp, execvpe 実装されていません。
fork 実装されていません。スレッドを使ってください。
getegid, geteuid, getgid, getuid 常に 1 が返ります。
getgrnam, getgrgid 実装されていません。
getlogin インターネットコントロールパネルにセットされているユーザ名が返ります。
getpid PSN の下位 31 ビットが返ります。
getppid 実装されていません。
getpwnam, getpwuid 実装されていません。
kill 実装されていません。
link 実装されていません。
mkfifo 実装されていません。
nice 実装されていません。
setgid, setuid 実装されていません。
times プロセスユーザタイムだけが返ります。
umask 実装されていません。
wait 実装されていません。
waitpid 実装されていません。
establish_server 実装されていません。スレッドを使ってください。
terminal functions (tc*) 実装されていません。
  Windows:
Cygwin 版 Objective Caml では Unix モジュールの関数はすべて完全に実装されています。native Win32 版では一部しか実装されていません。以下の関数は Win32 版では一部又は全部が実装されていません。ここに記載されていない関数は完全に実装されていて、この章で既に解説したように動作します。
Functions Comment
fork 実装されていません。create_process かスレッドを使ってください。
wait 実装されていません。waitpid を使ってください。
waitpid 与えられた PID のみ待つことができます。任意の子プロセスの終了を待つことはできません。
getppid 実装されていません (Windows 環境では無意味です) 。
nice 実装されていません。
in_channel_of_descr Windows 95, 98, ME 環境ではソケットに対しては正常に動作しません。NT と 2000 環境では正常に動作します。
out_channel_of_descr 同上。
truncate, ftruncate 実装されていません。
lstat, fstat 実装されていません。
link, symlink, readlink 実装されていません (Windows にリンクはありません) 。
fchmod 実装されていません。
chown, fchown 実装されていません (DOS のファイルシステムでは意味を持ちません) 。
umask 実装されていません。
set_nonblock, clear_nonblock ダミー関数として実装されています。非同期 I/O の代わりにスレッドを使ってください。
rewinddir 実装されていません。ディレクトリを開き直してください。
mkfifo 実装されていません。
select 実装されていますが、ソケットに対してのみ動作します。その他のファイルディスクリプタを待つ必要があるならスレッドを使ってください。
lockf 実装されていません。
kill, pause 実装されていません (Windows ではプロセス間のシグナルはありません) 。
alarm, times 実装されていません。
getitimer, setitimer 実装されていません。
getuid, getgid 常に 1 が返ります。
getgid, getegid, getgroups 実装されていません。
setuid, setgid 実装されていません。
getpwnam, getpwuid 常に例外 Not_found が発生します。
getgrnam, getgrgid 常に例外 Not_found が発生します。
type socket_domain PF_UNIX ドメインはサポートされていません。PF_INET は完全にサポートされています。
establish_server 実装されていません。スレッドを使ってください。
terminal functions (tc*) 実装されていません。

Previous Contents Next