std.os
プログラムの外側とのやり取り。引数・環境変数・場所・外のプログラム。任意モジュール。ゲーム機のように外を持たない処理系では、import でエラーになる。
import std.os; print(os.platform().len() > 0); // true
os.args os.env os.set_env os.platform os.cwd os.chdir os.temp_dir os.exit os.run Output.code Output.out Output.err
関数
- os.args() → list<string>¶
-
コマンド引数。1番目はプログラム名。
var args = os.args(); print(args.len() >= 1); // true
- os.env(name: string) → string?¶
-
環境変数を読む。無ければ none。
os.set_env("SHARK_FISH", "さめ"); print(os.env("SHARK_FISH") ?? ""); // さめ print(os.env("SHARK_NOTHING") ?? "無し"); // 無し
- os.set_env(name: string, value: string) → void¶
-
環境変数を書く。このプロセスと、ここから起動するプログラムに効く。
os.set_env("SHARK_FISH", "ふぐ"); print(os.env("SHARK_FISH") ?? ""); // ふぐ
- os.platform() → string¶
-
動いている環境。"macos" "windows" "linux" "wasm" "embedded" のどれか。
print(os.platform() != ""); // true
- os.cwd() → Result<string>¶
-
いまいるディレクトリ。
if var here = os.cwd() { print(here.len() > 0); } // true
- os.chdir(p: string) → Result<void>¶
-
いまいるディレクトリを変える。
_ = os.chdir(os.temp_dir()); if var here = os.cwd() { print(here.len() > 0); } // true
- os.temp_dir() → string¶
-
一時ファイルを置いてよい場所。
print(os.temp_dir().len() > 0); // true
- os.exit(code: int) → void¶
-
すぐ終わる。戻ってこない。走っているタスクは待たない。
ふつうは main から return する方がよい。
if os.args().len() < 2 { print("使い方: fish <ファイル>"); os.exit(1); }
- os.run(cmd: string, args: list<string>) → Result<Output>¶
-
外のプログラムを起動して、終わるまで待つ。シェルは通さない。
cmd string プログラムの名前か場所 args list<string> 渡す引数。空白で区切らず、1つずつ入れる if var o = os.run("echo", ["さめ"]) { print(o.code()); // 0 print(o.out().trim()); // さめ }
Output
外のプログラムの結果。
- Output.code() → int¶
-
終了コード。0 なら成功したことが多い。
if var o = os.run("echo", ["さめ"]) { print(o.code()); } // 0
- Output.out() → string¶
-
標準出力に出たもの。
if var o = os.run("echo", ["さめ"]) { print(o.out().trim()); } // さめ
- Output.err() → string¶
-
標準エラーに出たもの。
if var o = os.run("echo", ["さめ"]) { print(o.err() == ""); } // true