プラットフォームに依存する仕様

この節では、実行環境のプラットフォームに依存する仕様を規定する。この文書ではプラットフォームは Linux とする。プラットフォームが Linux であるとき、以下のプリミティブ演算を使用できる。

fork プリミティブ演算は引数を取らない。このプリミティブ演算を実行すると、子プロセスを生成する。戻り値は自然数である。自分自身が親プロセスであれば子プロセスのプロセス ID が、自分自身が子プロセスであれば 0 が返る。ただし、エラーの場合にはブーリアン型の false が返る。

waitpid プリミティブ演算は pid, no wait, if exited, exit status 引数を取る。pid 引数は必須で、自然数である必要がある。no wait 引数は省略可能で、省略しないならばブーリアン型である必要がある。このプリミティブ演算を実行すると、pid 引数で指定された子プロセスが終了するまで動作を停止する。ただし、no wait 引数の値が真のときは、動作を停止せずにすぐにプリミティブ演算を終了する。このプリミティブ演算の戻り値はイミュータブルマップコンテナである。このイミュータブルマップコンテナのキーは oklinux, pidlinux, if exitedlinux, exit statuslinux 有名ベクトルである。ok 要素はブーリアンで、このプリミティブ演算が正常に実行されたかどうかがセットされる。pid 要素は自然数で、終了した子プロセスのプロセス ID がセットされる。ただし、no wait 引数の値が真であり、指定した子プロセスが終了していないときは、自然数の 0 がセットされる。if exited 要素はブーリアンで、子プロセスが正常に終了したかどうかがセットされる。exit status 要素は自然数で、子プロセスの終了ステータスがセットされる。

execv プリミティブ演算は path 引数と argv 引数を取る。path 引数は文字列である必要がある。argv 引数はベクターコンテナであり、なおかつ、その各要素は文字列である必要がある。このプリミティブ演算を実行すると、path 引数で指定された実行可能ファイルを読み込み、現在のプロセスを置き換える。argv 引数はコマンドライン引数として使われる。慣習的に、path 引数の値と、argv 引数の先頭の要素は、同一の文字列であるべきである。

setenv プリミティブ演算は name 引数と value 引数を取る。これらの引数は省略不可で、どちらも文字列である必要がある。このプリミティブ演算は指定された環境変数を設定する。

unsetenv プリミティブ演算は name 引数を取る。この引数は省略不可で、文字列である必要がある。このプリミティブ演算は指定された環境変数を削除する。

set stdin, set stdout, set stderr プリミティブ演算は、それぞれ標準入力、標準出力、標準エラー出力を変更する。これらのすべてのプリミティブ演算は main 引数を取る。この引数は省略不可で、ファイルポインターである必要がある。

pipe プリミティブ演算は引数を取らない。このプリミティブ演算はパイプを生成する。このプリミティブ演算の戻り値はイミュータブルマップコンテナである。このイミュータブルマップコンテナのキーは inputlinux, outputlinux, oklinux 有名ベクトルである。input 要素と output 要素は、それぞれ、入力側と出力側のファイルポインターがセットされる。ok 要素はブーリアンで、処理に成功したかどうかがセットされる。オリジナルの pipe システムコールはファイルディスクリプターを返す。パステルステッチの pipe プリミティブ演算は、このファイルディスクリプターを fdopen システムコールで開いてから、ファイルポインターを返す。fdopen システムコールのモードは、入力側は "wb"、出力側は "rb" である。