Octaveは,サブプロセスの開始について,systemやpopenのような高水準のコマンドをを備えています。何らかの作業を行うめに別のプログラムを実行してその出力を見たいならば,おそらく,これらの関数を使用したいと思うでしょう。Octaveはいくつかの低水準のUNIXライクな関数も提供しています。この関数は,サブプロセスを開始するために使用することもできますが,高水準関数では実行する方法が見あたらないときにのみ使用するべきです。type)文字列stringによって指定されたシェルコマンドを実行する。2番めの引数はオプションである。typeが"async"ならば,そのプロセスはバックグラウンドで実行され,子プロセスのプロセスIDが直ちに返る。なければ,そのプロセスは開始し,これが終了するまでOctaveは待機する。引数typeを省略すると,値"sync"を仮定する。2つの入力引数が与えられ(return_outputの実際の値は関係しない),そのサブプロセスは同期的に開始されるならば,あるいはsystemが1つの入力引数と1つ以上の出力引数で呼び出されるならば,このコマンドからの出力は返される。なければ,もしサブプロセスを同期的に実行しているならば,その出力は標準出力に送られる。1));system関数は,2つの値を返すことになる。1番目は,そのコマンドが標準出力ストリームに各込んだ任意の出力であり,2番目はコマンドの出力ステータスである。2&quot;);この式は,変数outputに文字列`foo'をセットし,変数statusに整数`2'をセットする。mode)パイプを作成し,プロセスを開始する。実行すべきコマンドの名前は,commandによって与える。そのプロセスの入出力に対応するファイルIDは,fidに返される。引数modeは,以下のようになる。"r"パイプは,そのプロセスの標準出力に結合し,読み込みのためにオープンされる。"w"パイプは,そのプロセスの標準入力に結合し,書き出しのためにオープンされる。(fid)popenによってオープンされたファイルIDをクローズする。この目的には,fcloseを使うこともできる。args)2方向通信を行うサブプロセスを開始する。入力および出力ストリームに関するファイル識別子は,inとoutに返る。コマンドの実行が成功すると,pidはサブプロセスのプロセスIDを含む。なければ,pidは-1である。EXEC_PATH変数EXEC_PATHは,外部プログラムを実行するときに検索するディレクトリを,コロンで区切って並べたものである。その初期値は,(存在していれば)環境変数OCTAVE_EXEC_PATHあるいはPATHからとられる。PATH,またはスタートアップスクリプトでEXEC_PATHに値を設定することにより,上書きされる。EXEC_PATHの値の先頭(末端)にコロンがあれば,ディレクトリoctave-home/libexec/octave/site/exec/archoctave-home/libexec/octave/version/exec/archが,EXEC_PATHの先頭(末尾)に追加される。ここでoctave-homeはOctaveのすべてがインストールされたトップレベルディレクトリ(標準設定は`/usr/local')である。EXEC_PATHの値を明示的に指定しなければ,これらの特殊ディレクトリは,シェルパスの先頭に追加される。大部分のケースにおいて,以下の関数は単にその引数をデコードし,対応するUNIXのシステムコールを行います。これらをどのように使用することができるかの完全な例については,関数popen2の定義を見てください。()カレントプロセスをのコピーを生成する。forkから返った値は,子プロセスのプロセスIDである。終了すべき子プロセスを待つために準備すべきであろう。別のプロセスを開始するためにexecを呼び出すことができる。それが失敗すると,exitを呼び出すべきであろう。0何らかの理由で,forkの呼び出しが失敗した。回避する行動をとらなければならない。システムに依存するエラーメッセージは,msgに入ることになる。args)現在のプロセスを新しいプロセスで置き換える。最初にforkを呼び出さずにexecを呼ぶと,Octaveの現在の処理を終了し,それをfileという名前のプログラムで置き換える。&quot;-l&quot;)この式はlsを実行し,シェルのプロンプトに戻る。成功すると,errは0になり,msgは空文字列となる。ないならば,errはゼロ以外になり,msgにはシステム依存のエラーメッセージが入る。()パイプを作成し,ベクトルfile_idsを返す。これは,パイプの読み込みと書き出しの末端に対応する。成功すると,errは0になり,msgは空文字列となる。ないならば,errはゼロ以外になり,msgにはシステム依存のエラーメッセージが入る。new)ファイル記述子を複製する。成功すると,errは0になり,msgは空文字列となる。ないならば,errはゼロ以外になり,msgにはシステム依存のエラーメッセージが入る。options)プロセスpidが終了するのを待つ。引数pidは,以下の値をとることができる:-1任意の子プロセスを待つ。0グループIDがOctaveのインタプリタプロセスと等しい任意の子プロセスを待つ。0IDがpidである子プロセスの終了を待機する。引数optionsには,以下の値を設定できる:0シグナルを受け取るか子プロセスが終了するまで待機する(引数optionsを指定しないときは,この動作が標準設定である)。1ステータスが直ちに得られないならば,ハングしない。2停止した任意の子プロセスのステータスを報告する。そのステータスは,それらが停止するまで報告されない。31と2の両方を指定するのと同じ。pidの戻り値が0より大きいならば,その値は存在する子プロセスのプロセスIDである。エラーが発生すると,pidは0より小さくなり,msgにはシステム依存のエラーメッセージが入る。arg)オープンしたファイルfidのプロパティを変更する。以下の値をrequestとして渡すことができる:F_DUPFD複製したファイル記述子を返す。F_GETFDfidに関するファイル記述子フラグを返す。F_SETFDfidに関するファイル記述子フラグをセットする。F_GETFLfidに関するファイルステータスフラグをセットする。以下のコードが返ってくる(システムによっては,いくつかのフラグが定義されないことがある)。O_RDONLY読み込み専用でオープンされたO_WRONLY書き出し専用でオープンされたO_RDWR読み書き両用でオープンされたO_APPEND書き出しを追加O_CREATファイルが存在していなければファイルを生成するO_NONBLOCKNonblockingモードO_SYNC書き込みが完了するまで待機O_ASYNC非同期I/OF_SETFLfidについてのファイルステータスフラグを,argによって指定された値にセットする。変更可能なフラグは,O_APPENDとO_NONBLOCKである。成功すると,errは0になり,msgは空文字列となる。ないならば,errはゼロ以外になり,msgにはシステム依存のエラーメッセージが入る。