システム入出力、ファイル、ネットワーク、プロセス

ファイルディスクリプタ方式の入出力、ファイルシステム、ソケット/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 に従います。プラットフォーム依存のプログラムではターゲットを明示し、その環境で直接テストしてください。