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

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

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

waitpid プリミティブ演算は pid, no wait, if exited, exit status 引数を取る。pid 引数は必須で、自然数である必要がある。no wait 引数は省略可能で、省略しないならばブーリアン型である必要がある。if exited 引数と exit status 引数は省略可能で、省略しないならばベクトルである必要がある。このプリミティブ演算を実行すると、pid 引数で指定された子プロセスが終了するまで動作を停止する。ただし、no wait 引数の値が真のときは、動作を停止せずにすぐにプリミティブ演算を終了する。戻り値は自然数であり、終了した子プロセスのプロセス ID が返る。ただし、エラーの場合にはブーリアン型の false が返る。no wait 引数の値が真であり、指定した子プロセスが終了していないときは自然数の 0 が返る。if exited 引数と exit status 引数が省略されないならば、ストレージの指定されたセルに値が書き込まれる。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 プリミティブ演算は input, output, ok 引数を取る。これらの引数はベクトルである必要がある。このプリミティブ演算はパイプを生成する。input 引数と output 引数で指定されたストレージのセルには、それぞれ、入力側と出力側のファイルポインターが書き込まれる。ok 引数で指定されたストレージのセルには、処理に成功したかどうかがブーリアン型で書き込まれる。オリジナルの pipe システムコールはファイルディスクリプターを返す。パステルステッチの pipe プリミティブ演算は、このファイルディスクリプターを fdopen システムコールで開いてから、ファイルポインターを返す。fdopen システムコールのモードは、入力側は "wb"、出力側は "rb" である。