システム入出力、ファイル、ネットワーク、プロセス
ファイルディスクリプタ方式の入出力、ファイルシステム、ソケット/TCP/UDP、プロセス API と失敗時の契約を説明します。
Wave Foundation
ファイルを開く/閉じる
import("std::fs::file")::{fs_open_read, fs_close};
fun main() {
var fd: i64 = fs_open_read("input.txt");
if (fd >= 0) {
fs_close(fd);
}
}
fs_open_read は負の失敗結果をそのまま返すことがあるため、使用前に確認します。fs_close も結果を返します。クローズの失敗を扱う必要があるコードでは、その結果も確認してください。
std::io
std::io はファイルディスクリプタを使った読み書き、指定長の完全な転送、シーク、コピーを提供します。バッファを受け取る API では、ポインタと長さの単位および契約を一致させてください。
std::fs
std::fs::file には、存在確認、オープン、クローズ、サイズ取得、ファイル削除、ディレクトリの作成と削除、完全な読み書き、ファイルコピーの補助機能があります。
var size: i64 = fs_file_size("input.txt");
if (size < 0) {
println("file error");
}
ネットワーク
std::net は、アドレス処理、基本ソケット、ソケットオプション、ポーリング、TCP、UDP に分かれています。ネットワークコードでは、次の項目を明示的に管理します。
- アドレスファミリーとソケット種別
- ポートと整数のバイトオーダー
- ブロッキング状態とノンブロッキング状態
- 部分的な読み書き
- シャットダウンとエラー結果
プロセス
std::process は、プロセス作成、待機、定数、標準ストリームのリダイレクトを行うソース単位を提供します。プロセス作成の成功と、子プロセスが最終的に返す終了ステータスは別の結果として扱います。
プラットフォーム依存性
これらのモジュールは std::sys とネイティブ呼び出しを通してオペレーティングシステム境界を越えます。エラー値、フラグ、一部の構造体は選択した OS と ABI に従います。プラットフォーム依存のプログラムではターゲットを明示し、その環境で直接テストしてください。