6.9 OS 機能
このライブラリは os
テーブルに実装されます。
os.clock ()
プログラムが使用した総 CPU 時間の近似を返します (単位は秒)。返り値は ISO C 関数 clock
が返す値を利用して計算されます。
os.date ([format [, time]])
日付と時刻を含んだ文字列またはテーブルを返します。返り値は与えられた文字列 format
に従って成形されます。
引数 time
が与えられた場合には、この値が成形されて返ります (time
として渡すことができる値の説明は os.time
にあります)。time
が与えられなければ date
は現在時刻を成形します。
format
が '!'
で始まるなら、時刻は協定世界時 (UTC) で表されます。この省略可能なオプションの後に "*t"
が続くなら、date
は次のフィールドを持ったテーブルを返します:
year
month
(1–12)day
(1–31)hour
(0–23)min
(0–59)sec
(0–61, うるう秒を含む)wday
(曜日, 1–7, 日曜日が 1)yday
(日数, 1–366)isdst
(夏時間を表す真偽値)
最後の夏時間に関するフィールドは、情報が取得できない場合には設定されません。
format
が "*t"
でない場合には、date
は時刻を文字列に成形して返します。そのときは ISO C 関数 strftime
と同じ規則が使われます。
format
が与えられないときのデフォルト値は "%c"
です。これにより現在のロケールを使った日付と時刻が人間が読めるフォーマットで返ります。
POSIX でないシステムでは、C 関数 gmtime
と localtime
の関係でこの関数がスレッドセーフでない可能性があります。
os.difftime (t2, t1)
時刻 t1
から時刻 t2
までの差を返します (単位は秒)。二つの時刻には os.time
が返す値を使います。POSIX, Windows およびその他のシステムでは返り値が正確に t2 - t1
に等しくなります。
os.execute ([command])
この関数は ISO C 関数 system
と等価です。command
を OS のシェルに渡して実行します。一つ目の返り値はコマンドが正常に終了すれば true で、それ以外の場合は fail です。この関数はこれ以外に文字列と数値を返し、その意味は次の通りです:
"exit"
: コマンドは通常終了した。続く数値がコマンドの終了コードを表す。"signal"
: コマンドはシグナルによって終了した。続く数値がコマンドを終了させたシグナルを表す。
command
を指定せずに呼び出すと、os.execute
はシェルが利用可能かを表す真偽値を返します。
os.exit ([code [, close]])
ISO C 関数 exit
を呼び出してホストプログラムを終了します。code
が true なら状態コードとして EXIT_SUCCESS
が返り、code
が false なら EXIT_FAILURE
が返り、code
が数値ならその値が返ります。code
のデフォルトの値は true です。
省略可能な第二引数 close
が true なら、この関数はプログラムを終了する前に Lua ステートをクローズします。
os.getenv (varname)
プロセスの環境変数 varname
の値を返します。この環境変数が定義されていなければ fail が返ります。
os.remove (filename)
指定された名前のファイルを削除します。POSIX システムでは加えて空のディレクトリも削除できます。この関数が失敗すると、fail とエラーを説明する文字列とエラーコードが返ります。成功すれば true が返ります。
os.rename (oldname, newname)
oldname
という名前のファイルまたはディレクトリを newname
にリネームします。この関数が失敗すると、fail とエラーを説明する文字列とエラーコードが返ります。成功すれば true が返ります。
os.setlocale (locale [, category])
プログラムが持つ現在のロケールを設定します。locale
はロケールを指定する文字列であり、有効な値はシステムによって異なります。category
は変更するカテゴリを表す省略可能な文字列であり、指定する場合には "all"
, "collate"
, "ctype"
, "monetary"
, "numeric"
, "time"
のいずれかとします。デフォルトの category
は "all"
です。関数の要求に応えられるなら新しいロケールを返し、答えられないなら fail を返します。
locale
を空文字列とすると、現在のロケールが実装依存のネイティブロケールに設定されます。locale
を文字列 "C"
とすると、現在のロケールが標準規格に定義される C ロケールに設定されます。
第一引数を nil として呼び出すと、この関数は指定されたカテゴリに設定されている現在のロケールの名前を返します。
この関数は C 関数 setlocale
を利用するので、スレッドセーフでない可能性があります。
os.time ([table])
引数無しに呼ぶと現在時刻を返し、テーブルを引数として呼ぶとそのテーブルが指定するローカル日時と時刻を表す値を返します。引数として渡されるテーブルは year
, month
, day
フィールドを持っていいる必要があり、加えて hour
(デフォルトは 12)・min
(デフォルトは 0)・sec
(デフォルトは 0)・isdst
(デフォルトは nil) を持つことができます。他のフィールドは無視されます。これらのフィールドの説明は os.date
関数を参照してください。
os.time
が呼ばれるとき、table
のフィールドが正当な範囲の値を持っている必要はありません。例えば sec
が -10 の table
は他のフィールドによって指定される時刻の 10 秒前を意味します。また hour
が 1000 の table
は他のフィールドによって指定される時刻の 1000 時間後を意味します。
返り値は数値であり、その意味はシステムによって異なります。POSIX と Windows を含むシステムでは、返り値は特定の時刻 ("エポック") からの経過時刻を表します。他のシステムでは返り値の意味が定まっていないこともあり、その場合 time
の返り値は os.date
と os.difftime
の引数としてのみ使うことができます。
テーブルを渡して呼び出すとき、os.time
はテーブルのフィールドを os.date
にあるように正規化します。つまり同じ時刻を表したまま各フィールドが正当な範囲に収まるように変更されます。
os.tmpname ()
一時ファイルとして利用できるファイルの名前を文字列として返します。ファイルは使い始める前にオープンし、使った後に削除しなければなりません。
POSIX システムではセキュリティリスクを避けるために、この関数は返り値と同じ名前のファイルを作成します (名前を取得してファイルを作成するまでの間に誰かが同じ名前のファイルを異なる権限で作成する可能性があるからです)。ただしファイルのオープンと削除は依然必要です (使わないときでも削除は必要です)。
可能な場合には、プログラムが終了したときにファイルが自動的に削除される io.tmpfile
を使うことをお勧めします。