*Luaライブラリ 要注意点 ~OSライブラリ~ [#f8545427] **os.time ([table]) [#g5a5674f] -エポックからの経過秒を得る >引数なしで呼ぶと、''現在の時刻を返します。'' ''引数を指定すると、そのテーブルで指定した日付と時刻を表現する時刻を返します。'' このテーブルには以下のフィールドが必須です。 |year| |month| |day| さらに以下のフィールドも指定できます。 |hour|(デフォルトは 12)| |min|(デフォルトは 0)| |sec|(デフォルトは 0)| |isdst|(デフォルトは nil)| これらのフィールドの説明は os.date 関数を参照してください。~ ~ 戻り値はシステム依存の意味を持つ数値です。~ POSIX、Windows、その他いくつかのシステムでは、この数値は、ある特定の開始時刻 (「エポック」) からの経過秒数です。~ それ以外のシステムでは、その意味は決まっていません。~ time の戻り値は date および difftime への引数としてのみ使うことができます。~ ~ #sh(lua;){{ print(os.time()) --> 1343117264 print(os.time{year=1970, month=1, day=1, hour=0}) --> 10800 print(os.time{year=1970, month=1, day=1}) --> 54000 }} ** os.date ([format [, time]]) [#f436fc5f] - time関数の結果を人の目で見たわかりやすい形に直す。 >与えられた文字列 format に従って書式化した日付と時刻を含む文字列、またはテーブルを返す。~ time 引数が存在すれば、それが書式化される時刻となる(この値の説明は os.time 関数を参照)。~ そうでなければ、date は現在時刻を書式化する。~ format が `!´ で始まっていたら、日付は世界時 (Universal Time) で書式化される。~ このオプション文字の後、 format が *t であれば、 date は以下のフィールドを持つテーブルを返す。~ ~ 例: #sh(lua;){{ {year=1998, month=9, day=16, yday=259, wday=4, hour=23, min=48, sec=10, isdst= false} }} |year|4桁の数値| |month|1-12| |day|1-31| |hour|0-23| |min|0-59| |sec|0-61| |wday|曜日、日曜日が1| |yday|1月1日から数えた日数| |isdst|夏時間を示すフラグ、ブーリアン| ~ format が *t でなければ、 date は日付を文字列として返す。~ Cの関数 strftime と同じルールに従って書式化される。 ~ 引数なしで呼ばれた場合、date はホストシステムと現在のロケールに依存する一般的な日付と時刻の表現を返す。~ (つまり、os.date() は os.date("%c") と等価である)。 ** strftime [#o346fbaf] >os.date()という引数無しだとos.date("%c")と見なされる。 ** 環境変数の取得 [#u880e3aa] #sh(lua;){{ print(os.getenv("PATH")) --> C:\~~;~~ }} **exit [#y8a52a7a] > #sh(lua;){{ os.exit ([code]) }} 省略可能な code(整数値) でCの関数 exit を呼んでホストプログラムを終了させる。~ code のデフォルト値は成功を表すコードである。 **os.execute [#nf417456] >外部プログラム実行(他言語のsystem関数系に相当する。コンソール窓が出てしまうので、~ shell.execute関数(コンソールが出ないもの)を別途C層で用意したほうが良い。 **io.popen [#a318ed37] >osライブラリではないが、os.systemのより便利版として利用できる。いわゆるperlの`(cmd_string)`と同じである。 #sh(lua;){{ for dir in io.popen("dir " .. "C:\\" .. " /b /aa"):lines() do print(dir) end }} **ファイル操作等 [#z4cceac9] -os.remove (filename) ファイルの削除 >指定された名前のファイルまたはディレクトリを消す。~ 対象がディレクトリの場合、ディレクトリ内は空でなければならない。 (※まぁよくあるやつですよ。よって中にあるファイルを消してからディレクトリを消す。~ というのを下層ディレクトリから上層へと再帰的に行う必要がある。)~ この関数が失敗した場合は nil とエラーメッセージを返す。 #sh(lua;){{ sample dir = "..." os.remove(dir) }} ~ -os.rename (oldname, newname) ファイル名変更 >ファイル(ディレクトリ)名 oldname を newname にリネームする。~ この関数が失敗した場合は nil とエラーメッセージを返す。~ #sh(lua;){{ f_old = "..." f_new = "..." os.rename(f_old, f_new) }}