JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
プログラミングインタフェースガイド     Oracle Solaris 10 1/13 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  メモリーと CPU の管理

2.  リモート共有メモリー API (Solaris クラスタ用)

3.  セッション記述プロトコル API

4.  プロセススケジューラ

5.  近傍性グループ API

6.  入出力インタフェース

ファイルと入出力インタフェース

基本ファイル入出力

高度なファイル入出力

ファイルシステム制御

ファイルとレコードのロックの使用

ロックタイプの選択

アドバイザリロックと強制ロックの選択

強制ロックについての注意事項

サポートされるファイルシステム

ロック用にファイルを開く

ファイルロックの設定

レコードロックの設定と解除

ロック情報の取得

プロセスのフォークとロック

デッドロック処理

端末入出力インタフェース

7.  プロセス間通信

8.  ソケットインタフェース

9.  XTI と TLI を使用したプログラミング

10.  パケットフィルタリングフック

11.  トランスポート選択と名前からアドレスへのマッピング

12.  リアルタイムプログラミングと管理

13.  Solaris ABI と ABI ツール

A.  UNIX ドメインソケット

索引

ファイルと入出力インタフェース

一連のデータが編成されたファイルを「通常ファイル」と呼びます。通常ファイルには、ASCII テキスト、ほかの符号化バイナリデータによるテキスト、実行可能コード、またはテキスト、データ、コードの組み合わせが入っています。

通常ファイルのコンポーネントは次のとおりです。

Solaris オペレーティングシステムでは、次のような基本的なファイル入出力インタフェースが提供されています。

基本ファイル入出力

次のインタフェースは、ファイルとキャラクタ入出力デバイス上で基本的な操作を実行します。

表 6-1 基本的なファイル入出力インタフェース

インタフェース名
目的
読み取りまたは書き込み用にファイルを開きます
ファイル記述子を閉じます
ファイルから読み取ります
ファイルに書き込みます
新しいファイルを作成するか、既存のファイルに上書きします
ディレクトリエントリを削除します
読み取りまたは書き込み用のファイルポインタを移動します

次のコード例は、基本的なファイル入出力インタフェースの使用方法を示します。read(2)write(2) はどちらも、現在のファイルのオフセットから指定された数を超えないバイト数を転送し、実際に転送されたバイト数が返されます。read(2) では、ファイルの終わりは戻り値が 0 になります。

例 6-1 基本的なファイル入出力インタフェース

#include            <fcntl.h>
#define            MAXSIZE            256

main()
{
    int     fd;
    ssize_t n;
    char        array[MAXSIZE];

    fd = open ("/etc/motd", O_RDONLY);
    if (fd == -1) {
        perror ("open");
        exit (1);
    }
    while ((n = read (fd, array, MAXSIZE)) > 0)
        if (write (1, array, n) != n)
            perror ("write");
    if (n == -1)
        perror ("read");
    close (fd);
}

ファイルの読み取りまたは書き込みが完了したあとは必ず、そのファイルに対して close(2) を呼び出してください。close(2) の呼び出しが完了していないファイル記述子に対しては open(2) を呼び出してはなりません。

開いたファイルへのファイルポインタオフセットを変更するには、read(2) または write(2) を使用するか、lseek(2) を呼び出します。次の例では、lseek の使い方を示します。

off_t     start, n;
struct    record    rec;

/* record current offset in start */
start = lseek (fd, 0L, SEEK_CUR);

/* go back to start */
n = lseek (fd, -start, SEEK_SET);
read (fd, &rec, sizeof (rec));

/* rewrite previous record */
n = lseek (fd, -sizeof (rec), SEEK_CUR);
write (fd, (char *&rec, sizeof (rec));

高度なファイル入出力

次の表に、高度なファイル入出力インタフェースが実行するタスクの一覧を示します。

表 6-2 高度なファイル入出力インタフェース

インタフェース名
目的
ファイルにリンクします
ファイルのアクセス可能性を判断します
特殊ファイルまたは通常のファイルを作成します
ファイルのモードを変更します
ファイルの所有者とグループを変更します
ファイルのアクセス時間や変更時間を設定します
ファイルのステータスを取得します
ファイル制御機能を実行します
デバイスを制御します
構成可能なパス名変数を取得します
ディレクトリを操作します
ディレクトリを作成します
シンボリックリンクの値を読み取ります
ファイル名を変更します
ディレクトリを削除します
ファイルへのシンボリックリンクを作成します

ファイルシステム制御

次の表にあるファイルシステム制御インタフェースを用いて、ファイルシステムに対してさまざまな制御を行うことができます。

表 6-3 ファイルシステム制御インタフェース

インタフェース名
目的
ファイルシステムの統計情報を取得します
スーパーブロックを更新します
ファイルシステムをマウントします
ファイルシステム情報を取得します
ファイルシステムの種類の情報を取得します