21. unix
ライブラリ: UNIX システムコール
unix
ライブラリを使うと Objective Caml プログラムから多くの Unix システムコールや、システムに関係したライブラリ関数を使用することができるようになります。この章では unix
モジュールで提供される関数を簡単に解説します。これらの関数の動作について詳しいことは Unix の man ページのセクション 2 及び 3 を参照してください。
すべての Un*x でこれらの関数がすべて利用可能であるとは限りません。使用できない関数がある場合、その関数を呼び出すと 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";;
と入力しても構いません。
| Windows |
---|
Windows 版 Objective Caml では Unix システムコールをかなり完璧にエミュレーションしたものが提供されています。Windows 環境でサポートされていない関数についてのより詳しい情報は本章の末尾に挙げてあります。
|
- Unix モジュール: Unix system calls
- UnixLabels モジュール: Labeled Unix system calls
| Windows |
---|
Cygwin 版 Objective Caml では Unix モジュールの関数はすべて完全に実装されています。 Win32 ネイティブ版では一部しか実装されていません。以下の関数は Win32 版では一部又は全部が実装されていません。ここに記載されていない関数は完全に実装されていて、この章で既に解説したように動作します。
関数 | コメント |
fork |
実装されていません。 create_process かスレッドを使ってください。
|
wait |
実装されていません。 waitpid を使ってください。
|
waitpid |
与えられた PID のみを待つことができます。任意の子プロセスの終了を待つことはできません。
|
getppid |
実装されていません(Windows 環境では無意味です)。
|
nice |
実装されていません。
|
truncate , ftruncate |
実装されていません。
|
link , symlink , readlink |
実装されていません(Windows にリンクはありません)。
|
access |
実行パーミッション X_OK をテストすることはできません。
代わりに読み込みパーミッションをテストします。
|
fchmod |
実装されていません。
|
chown , fchown |
実装されていません(DOS のファイルシステムでは意味を持ちません)。
|
umask |
実装されていません。
|
set_nonblock , clear_nonblock |
ダミー関数として実装されています。非同期 I/O の代わりにスレッドを使ってください。
|
rewinddir |
実装されていません。代わりにディレクトリを開き直してください。
|
mkfifo |
実装されていません。
|
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_INET6 ドメインはサポートされていません。 PF_INET は完全にサポートされています。
|
establish_server |
実装されていません。スレッドを使ってください。
|
端末関数 (tc* ) |
実装されていません。
|
|