この章では，Octave の外部で何が起こっているのかについての情報を，プログラムの実行中に得る
ことができ，それを自分のプログラムでこの情報を使用できるようにする関数を説明しています。
た
とえば，環境変数や現在時刻のについての情報を得たり，Octave プロンプトから他のプログラムを起
動したりすらできます。
Octave の時間値を操作するための一連の関数の核は，標準C ライブラリからの対応する関数に似ています。
これら関数もいくつかは，以下の要素を含む，時間に関するデータ構造体を使用します。
usec 秒以下のマイクロ秒(0-999999) です。
sec 分以下の秒(0-61) です。
この数値は，うるう秒を説明するために61 をとることがあります。
min 時以下の分(0-59) です。
hour 深夜からの時(0-23) です。
mday 1 か月内の日(1-31) です。
mon 1 月からの月(0-11) です。
year 1900 年からの年です。
wday 日曜日からの曜日(0-6) です。
yday 1 月1 日からの日数(0-365) です。
isdst 夏時間のフラグです。
zone タイムゾーンです。
以下の関数の解説において，この構造体はtm struct として参照します。
[Loadable Function]
現在の時間を紀元からの秒数として返します。
その紀元は，1970 年1 月1 日00:00:00 CUT（協定世界時）を示します。
たとえば，1997 年2 月17 日月曜日の07:15:06 CUT において，timeによって返される値は856163706 です。
[Function File]
timeから戻る値（あるいは任意の非負の整数）を，ローカル時刻に変換し，asctimeと同じ文字列を返します。
関数ctime (time) は，asctime (localtime (time))に等しい。
以下の例を参照してください。
[Loadable Function]
関数timeから返る値（あるいは任意の非負の整数）を与え，CUT に対応する時刻構造体を返します。
以下に例を示します。
[Loadable Function]
関数timeから返る値（あるいは任意の非負の整数）を与え，ローカルタイムゾーンに対応する時刻構造体を返します。
以下に例を示す。
[Loadable Function]
ローカル時刻に対応する時刻構造体を，紀元からの秒数に変換します。
以下に例を示す。
[Function File]
以下の5 つのフィールドをもつフォーマットを使用して，時刻構造体を文字列に変換します: 
ThuMar 28 08:40:14 1996 以下に例を示します。
これはctime (time ())と等価です。
[Loadable Function]
時刻構造体を，printfと同様の‘%’代入子を用いて柔軟にフォーマットします。
ここで述べたものを除き，代入フィールドは固定サイズである; 数値フィールドは必要に応じて詰められます。
標準ではゼロで埋める; 1 個の数を表示するフィールドについて，詰め物は，以下に述べる修飾子
をもつ‘%’によって変更されたり引き継がれます。
未知のフィールド指定子は，通常の文字としてコピーされます。
全ての他の文字は，変更なく出力にコピーされます。
たとえば，以下の例を参照してください。
strftime ("%r (%Z) %A %e %B %Y", localtime (time ()))
) "01:15:06 AM (CST) Monday 17 February 1997"
Octave のstrftime関数は，ANSI C フィールド指定子の上位互換性をサポートしています。
リテラル文字フィールド:
数値修飾子（標準にはない拡張）:
時刻フィールド:
日付フィールド:
[Loadable Function]
文字列str を，フォーマットfmt の支配下で，時刻構造体に変換します。
このセクションで解説している残りの関数の大部分は，標準C ライブラリにちなんだものではありません。
その中にはMatlab との互換性のために利用可能であり，それ以外の関数は有用だという理由で提供しています。
[Function File]
現在の年，月（1-12），日（1-31），時間（0-23），分（0-59）および秒（0-61）を含むベクトルを返します。
以下に例を示します。
関数clockは，gettimeofday関数をもつシステムにおいてより正確です。
[Function File]
日付をDD-MMM-YY 形式の文字列を返します。
以下に例を示します。
[Function File]
clockによって返される2 値の間の差を（秒で）返します。
たとえば，
この式は，変数t0をセットしてからの秒数をelapsed_timeにセットします。
[Function File]
実行中のOctave セッションによって使用されたCPU 時間を返します。
1 番めの出力はそのプロセスが実行するのに費やした総時間であり，2 番めと3 番めの出力の和に等しい。
ここでこれらの出力は，それぞれユーザモードおよびシステムモードでの実行に費やしたCPU 秒数です。
使用しているシステムがCPU 時間の利用を報告するための方策を持たないならば，その出力値の各々について0 を返します。
Octave は起動にいくぶんCPU 時間を使用するので，使用した総CPU 時間がゼロでないことを確かめるチェックを行うことにより，cputime 関数が動作しているかどうかを確認をすることは合理的です。
[Function File]
与えられた年year がうるう年ならば1，そうでなければ0 を返します。
もし何も引数を与えなければ，is_leap_yearは今年を使用します。
以下に例を示す。
[Function File]
[Function File]
これらの関数は，掛け時計タイマーをセットしたりチェックしたりします。
たとえば，
多くの計算を行った後...
この式は，最も最近，関数ticを呼び出したときからの秒数を，変数elapsed_timeに返します。
プロセスが使用したCPU 時間により興味があるならば，かわりにcputime 関数を使用するべきです。
ticとtoc関数は，呼び出しの間に経過した実際の時刻を報告します。この値には，他の作業を処理した時間や，何もしなかった時間も含んでいます。
以下の例を参照してください。
（この例は，CPU タイマがかなり荒い精度であることも示しています。）
[Built-in Function]
プログラムの実行を一時中断します。
何も引数を付けずに起動すると，Octave は何か文字が入
力されるまで待機します。
数値を引数とすると，与えられた秒数だけ待機します。
たとえば，以下
のステートメントはメッセージを表示し，その後，スクリーンをクリアする前に5 秒待機します。
[Built-in Function]
与えた数値の秒数だけプログラムの実行を一時中断します。
[Built-in Function]
与えられた数値のマイクロ秒（1/1000000 秒）だけプログラムの実行を一時中断します。
1 秒以下の時間のスリープが可能ではないシステムにおいては，usleepはround (microseconds /1e6)秒だけ実行を一時中断します。
Octave には，ファイル名を変更や削除，ディレクトリを作成，削除，読み込み，ファイルの状態についての情報を得るための，以下の関数群が含まれています。
[Built-in Function]
ファイル名をold からnew へ変更します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
存在するファイルへの新たなリンク（ハードリンクとしても知られている）を作成します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
文字列old を含むシンボリックリンクnew を作成します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
シンボリックリンクsymlink を読み込む。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
ファイルfile を削除します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
ディレクトリdir にあるファイルの名前を，文字列のセル配列files として返します。
エラーが発生したならば，空のセル配列を返します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
dir という名前のディレクトリを作成します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
dir という名前のディレクトリを削除します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
ファイル名がname である特殊ファイルfifo を，ファイルモードmode で作成します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
ファイル生成時のパーミッションマスクを指定します。
引数mask は整数であり，8 進数として解釈されます。
成功すると，マスクの以前の値（8 進数として解釈される整数）を返します。
そうでなければ，エラーメッセージを表示する
[Built-in Function]
[Built-in Function]
ファイルfile についての以下の情報を含む構造体s を返します。
atime 最終アクセス時刻（timeから返る時刻値と同じ形式）Section 34.1 [Timing Utilities]を参照してください。
mtime 最終修正時刻（timeから返る時刻値と同じ形式）Section 34.1 [Timing Utilities]を参照してください。
ctime 最終ファイル状態変更時刻（timeから返る時刻値と同じ形式）Section 34.1 [TimingUtilities]を参照してください。
この呼び出しが成功すると，err は0 でmsg は空文字列となります。
そのファイルが存在していない，もしくは他のエラーが発生するならば，s は空行列，err は!1，msg には対応するエラー
メッセージを含みます。
file がシンボリックリンクならば，stat関数は，リンクによって参照される実際のファイルについての情報を返します。
シンボリックリンクそのものについての情報が欲しいのならば，lstatを使用してください。
以下に例を示します。
[Built-in Function]
old to new に文字列配列を与え，それらのいずれかにマッチするファイル名のセル配列を返します。
マッチしなければ，空のセル配列を返します。
マッチする前ファイルを探す前に，パターンの各々においてチルダ展開を実行します。
以下に例を示します。
[Built-in Function]
ファイルパターンマッチングの規則を利用し，文字列配列pattern の要素のいずれかにマッチ
するstring の各要素について1 または0 を返します。
以下に例を示します。
[Built-in Function]
[Built-in Function]
ファイルfile がpath に見つかったならば，その絶対名を返します。
path の値は，組み込み変数LOADPATHの記述フォーマットでコロンで区切ったディレクトリのリストとすべきです。
何もファイルが見つからなければ，空の行列を返します。
以下に例を示します。
もし2 番目の引数が文字列のセル配列ならば，セル配列の要素について，パスの各ディレクトリを検索し，最初にマッチしたものを返します。
3 番目のオプション引数"all"を与えると，そのパスで同じファイル名をもつ全てのファイルのリストを含むセル配列を返します。
もし何もファイルが見つからなければ，空のセル配列を返します。
[Built-in Function]
文字列string においてチルダ展開を行う。
もしstring がチルダ文字（‘~’）で始まっていれば，
最初のスラッシュまでの全ての文字（もしスラッシュがなければ全ての文字）は可能なユーザ名として扱われ，チルダとスラッシュ以降の文字は，ユーザ名のホームディレクトリに置き換えられます。
もしチルダの直後にスラッシュがあれば，チルダはOctave を実行しているユーザのホームディレクトリで置き換えます。
たとえば，
Octave は，サブプロセスの開始について，systemやpopenのような高水準のコマンドをを備えています。
もし何らかの作業を行うめに別のプログラムを実行してその出力を見たいならば，おそらく，これらの関数を使用したいと思うでしょう。
Octave はいくつかの低水準のUNIX ライクな関数も提供しています。
この関数は，サブプロセスを開始するために使用することもできますが，高水準関数では実行する方法が見あたらないときに
のみ使用するべきです。
[Built-in Function]
文字列string によって指定されたシェルコマンドを実行します。
2 番めの引数はオプションです。
もしtype が"async"ならば，そのプロセスはバックグラウンドで実行され，子プロセスのプロセスID が直ちに返ります。
そうでなければ，そのプロセスは開始し，これが終了するまでOctave は待機します。
引数type を省略すると，値"sync"を仮定します。
もし2 つの入力引数が与えられ（return output の実際の値は関係しない），そのサブプロセスは同期的に開始されるならば，あるいはsystem が1 つの入力引数と1 つ以上の出力引数で呼び出されるならば，このコマンドからの出力は返されます。
そうでなければ，もしサブプロセスを同期的に実行しているならば，その出力は標準出力に送られます。
system で実行したコマンドの出力をページャに送るには，以下のようなコマンドを使用してください:
or
system関数は，2 つの値を返すことになります。
1 番目は，そのコマンドが標準出力ストリームに各込んだ任意の出力であり，2 番目はコマンドの出力ステータスです。
たとえば，
この式は，変数outputに文字列‘foo’をセットし，変数statusに整数‘2’をセットします。
[Built-in Function]
パイプを作成し，プロセスを開始します。
実行すべきコマンドの名前は，command によって与えます。
そのプロセスの入出力に対応するファイルID は，fid に返されます。
引数mode は，以下のようになります。
"r" パイプは，そのプロセスの標準出力に結合し，読み込みのためにオープンされます。
"w" パイプは，そのプロセスの標準入力に結合し，書き出しのためにオープンされます。
例を挙げます。
[Built-in Function]
popenによってオープンされたファイルID をクローズします。
この目的には，fcloseを使うこともできます。
[Function File]
2 方向通信を行うサブプロセスを開始します。
プロセスの名前は，command によって与えられ，args はそのコマンドに対するオプションを含む文字列の配列です。
入力および出力ストリームに関するファイル識別子は，in とout に返ります。
コマンドの実行が成功すると，pid はサブプロセスのプロセスID を含みます。
そうでなければ，pid は!1 です。
以下に例を示す。
[Built-in Variable]
変数EXEC_PATHは，外部プログラムを実行するときに検索するディレクトリを，コロンで区切って並べたものです。
その初期値は，（存在していれば）環境変数OCTAVE_EXEC_PATHあるいはPATHからとられます。
しかし，その値はコマンドライン引数--exec-path PATH，またはスタートアップスクリプトでEXEC_PATHに値を設定することにより，上書きされます。
の値の先頭（末端）にコロンがあれば，ディレクトリ
が，EXEC_PATHの先頭（末尾）に追加されます。
ここでoctave-home はOctave のすべてがインストールされたトップレベルディレクトリ（標準設定は‘/usr/local’）です。
もしEXEC_PATHの値を明示的に指定しなければ，これらの特殊ディレクトリは，シェルパスの先頭に追加されます。
大部分のケースにおいて，以下の関数は単にその引数をデコードし，対応するUNIX のシステム
コールを行います。
これらをどのように使用することができるかの完全な例については，関数popen2
の定義を見てください。
[Built-in Function]
カレントプロセスをのコピーを生成します。
この関数は，以下の値のひとつを返す:
> 0 親プロセスにいます。
forkから返った値は，子プロセスのプロセスID です。
お
そらく，終了すべき子プロセスを待つために準備すべきであろう。
0 子プロセスにいます。
別のプロセスを開始するためにexecを呼び出すことができ
る。
それが失敗すると，exitを呼び出すべきであろう。
< 0 何らかの理由で，forkの呼び出しが失敗した。
回避する行動をとらなければなら
ない。
システムに依存するエラーメッセージは，msg に入ることになります。
[Built-in Function]
現在のプロセスを新しいプロセスで置き換えます。
最初にforkを呼び出さずにexecを呼ぶと，
Octave の現在の処理を終了し，それをfile という名前のプログラムで置き換えます。
たとえば，
この式はlsを実行し，シェルのプロンプトに戻ります。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外に
なり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
パイプを作成し，ベクトルfile ids を返します。
これは，パイプの読み込みと書き出しの末端に対
応します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外に
なり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
ファイル記述子を複製します。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外に
なり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
プロセスpid が終了するのを待ちます。
引数pid は，以下の値をとることができる:
!1 任意の子プロセスを待ちます。
0 グループID がOctave のインタプリタプロセスと等しい任意の子プロセスを待ちます。
> 0 ID がpid である子プロセスの終了を待機します。
引数options には，以下の値を設定できます:
しないときは，この動作が標準設定である）。
1 ステータスが直ちに得られないならば，ハングしない。
2 停止した任意の子プロセスのステータスを報告します。
また，そのステータスは，それらが停止するまで報告されません。
3 1 と2 の両方を指定するのと同じ。
もしpid の戻り値が0 より大きいならば，その値は存在する子プロセスのプロセスID です。
もしエラーが発生すると，pid は0 より小さくなり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
オープンしたファイルfid のプロパティを変更します。
以下の値をrequest として渡すことができます:
F_DUPFD 複製したファイル記述子を返します。
F_GETFD fid に関するファイル記述子フラグを返します。
F_SETFD fid に関するファイル記述子フラグをセットします。
F_GETFL fid に関するファイルステータスフラグをセットします。
以下のコードが返ってきます（システムによっては，いくつかのフラグが定義されないことがある）。
します。変更可能なフラグは，O_APPENDとO_NONBLOCKです。
成功すると，err は0 になり，msg は空文字列となります。
そうでないならば，err はゼロ以外になり，msg にはシステム依存のエラーメッセージが入ります。
[Built-in Function]
カレントプロセスのプロセスグループID を返します。
[Built-in Function]
カレントプロセスのプロセスID を返します。
[Built-in Function]
親プロセスのプロセスID を返します。
[Built-in Function]
カレントプロセスの有効なユーザID を返します。
Chapter 34: システムユーティリティ297
[Built-in Function]
カレントプロセスの実ユーザID を返します。
[Built-in Function]
カレントプロセスの有効なグループID を返します。
[Built-in Function]
カレントプロセスの実グループID を返します。
[Built-in Function]
環境変数var の値を返します。
たとえば，
この式はパスの値を含む文字列を返します。
[Built-in Function]
環境変数var に値value をセットします。
    [Command]
  [Command]
カレント作業ディレクトリをdir に変更します。
dir を省略すると，ユーザのホームディレクトリに変更します。
たとえば，
このコマンドは，カレント作業ディレクトリを‘~/octave’に変更します。
もしそのディレクトリが存在しなければ，エラーメッセージを表示し，作業ディレクトリは変更されません。
[Command]
ディレクトリの内容を一覧表示します。
以下に例を示します。
dirおよびlsコマンドは，システムのディレクトリ一覧表示コマンドを呼び出すことで実装されています。
ゆえに，利用できるオプションは，システムによって変化します。
[Built-in Function]
カレント作業ディレクトリを返します。
Octave のパスワードデータベース関数は，以下のフィールドをもつ構造体に情報を返します。
以下の関数の解説において，このデータ構造体はpw struct として参照しています。
[Loadable Function]
パスワードデータベースから（必要であればオープンして）エントリを含む構造体を返します。
一度データの終端に達したならば，getpwentは0 を返します。
[Loadable Function]
ユーザIDuid について，パスワードデータベースからの最初のエントリを含む構造体を返します。
もしユーザID がそのデータベースに存在していなければ，0 を返します。
[Loadable Function]
ユーザ名name について，パスワードデータベースからの最初のエントリを含む構造体を返します。
もしユーザ名がそのデータベースに存在していなければ，0 を返します。
[Loadable Function]
パスワードデータベースの始点に対する内部ポインタを返します。
[Loadable Function]
パスワードデータベースをクローズします。
Octave のグループデータベース関数は，以下のフィールドをもつ構造体に情報を返します。
以下の関数の解説において，このデータ構造体はgrp struct として参照しています。
[Loadable Function]
グループデータベースから（必要であればオープンして）エントリを含む構造体を返します。
一度データの終端に達したならば，getgrentは0 を返します。
[Loadable Function]
グループIDgid について，グループデータベースからの最初のエントリを含む構造体を返します。
もしグループID がそのデータベースに存在していなければ，0 を返します。
[Loadable Function]
グループ名name について，グループデータベースからの最初のエントリを含む構造体を返します。
もしグループ名がそのデータベースに存在していなければ，0 を返します。
[Loadable Function]
グループデータベースの始点に対する内部ポインタを返します。
[Loadable Function]
グループデータベースをクローズします。
[Function File]
cpu-vendor-os の形式の文字列を返します。
これは，Octave が動作しているコンピュータの種類
を識別します。
もし出力引数付きで呼び出すと，その値は表示せずに返します。
たとえば，以下のようです。
[Built-in Function]
もし使用しているコンピュータが，浮動小数点演算についてのIEEE 標準に従うと主張するな
らば1 を返します。
[Built-in Variable]
Octave のバージョン数を文字列で表したものです。
[Built-in Function]
Octave に関する設定とインストール情報を含む構造体を返します。
option が文字列ならば，指定したオプションについての設定情報を返します。
[Loadable Function]
カレントOctave プロセスについて，種々の統計量を含む構造体を返します。
全てのシステムで，全ての情報が手にはいるわけではない。
もしCPU 時間統計量が得られないならば，CPU 時間項目はゼロにセットされます。
他の未取得項目はNaN で置き換えられます。
getrusageによって返される構造体に入る，全ての可能なフィールドのリストは，以下のようなものである:
idrss 非共有データサイズ
inblock Number of block input operations.
stime この構造体は，使用したシステムCPU 時間を含みます。
その構造体は，要素sec（秒），usec（マイクロ秒）をもちます。
utime この構造体は，使用したユーザCPU時間を含みます。
その構造体は，要素sec （秒），usec（マイクロ秒）をもちます。