日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 章:はじめに
第 2 章:入出力について
第 3 章:文字/文字列/引数リスト関数
第 4 章:エラー処理とシグナル処理
第 5 章:サブプロセス関数
第 6 章:Curses画面管理関数とマクロ
第 7 章:算術関数
第 8 章:メモリ割り当て関数
第 9 章:システム関数
第 10 章:国際化ソフトウェアの開発
第 11 章:日付/時刻関数
第 12 章:シンボリックリンクとPOSIXパス名
付録 A:各OSバージョンでサポートする関数一覧
付録 B:非標準ヘッダに複製されているプロトタイプ
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (上巻)


目次 索引

第 2 章
入出力について

HP C Run-Time Library (RTL) には,3 種類の入出力 (I/O) があります。それは UNIX I/O,標準 I/O,端末 I/Oです。 表 2-1 は, HP C RTL のすべての I/O 関数とマクロを示しています。各関数とマクロの詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)』「リファレンス・セクション」を参照してください。

表 2-1 I/O 関数とマクロ
関数またはマクロ 説明
UNIX I/O---ファイルのオープンとクローズ
close ファイル記述子に関連付けられているファイルをクローズする。
creat ファイルを新規作成する。
dup, dup2 open creat pipe から返されたファイル記述子によって指定されるファイルに新しい記述子を割り当てる。
open ファイルをオープンし,ファイルの位置をファイルの先頭に設定する。
UNIX I/O---ファイルからの読み込み
read ファイルからバイトを読み込み,バッファに格納する。
UNIX I/O---ファイルへの書き込み
write 指定されたバイト数をバッファからファイルに書き込む。
UNIX I/O---ファイル内の位置設定
lseek ストリーム・ファイルを任意のバイト位置に設定し,新しい位置を int として返す。
UNIX I/O---追加の X/Open I/O 関数とマクロ
fstat, stat ファイル記述子またはファイル指定に関する情報にアクセスする。
flockfile, ftrylockfile, funlockfile ファイル・ポインタ・ロック関数。
fsync 指定されたファイルに保存するためにバッファに格納されている情報をディスクに書き込む。
getname ファイル記述子に関連付けられているファイル指定を返す。
isapipe ファイル記述子がパイプに関連付けられている場合は 1,関連付けられていない場合は 0 を返す。
isatty 指定されたファイル記述子が端末に関連付けられている場合は 1,関連付けられていない場合は 0 を返す。
lwait 保留中の非同期 I/O の終了を待つ。
ttyname ファイル記述子 0 (デフォルトの入力デバイス) に関連付けられている端末デバイスの名前 (ヌル区切り) を指すポインタを返す。
標準 I/O---ファイルのオープンとクローズ
fclose ファイル制御ブロックに関連付けられているバッファの内容を書き込み,ファイル・ポインタに関連付けられているファイル制御ブロックおよびバッファを解放することにより,ファイルをクローズする。
fdopen open creat dup dup2 pipe 関数から返されたファイル記述子にファイル・ポインタを関連付ける。
fopen FILE 構造体のアドレスを返すことにより,ファイルをオープンする。 (ファイルをオープンしてファイル・ポインタを返す。)
freopen ファイル指定によって名前が指定されるファイルを,ファイル・ポインタによってアドレスが指定されるオープンされているファイルに置き換える。 (ファイルをオープンして指定されたファイル・ポインタに結びつける。)
標準 I/O---ファイルからの読み込み
fgetc, getc, fgetwc, getw, getwc 指定されたファイルから文字を 1 文字読み込む。
fgets, fgetws 指定されたファイルから 1 行を読み込み,文字列を引数に格納する。
fread 指定された数の項目をファイルから読み込む。
fscanf, fwscanf, vfscanf, vfwscanf 指定されたファイルから書式に従って読み込む。
sscanf, swscanf, vsscanf, vswscanf メモリ内の文字列から書式に従って読み込む。
ungetc, ungetwc 文字を入力ストリームに戻し,挿入した文字の前にあるストリームはそのまま残す。
標準 I/O---ファイルへの書き込み
fprintf, fwprintf, vfprintf, vfwprintf 指定されたファイルに書式に従って出力する。
fputc, putc, putw, putwc, fputwc 指定されたファイルに文字を書き込む。
fputs, fputws 文字列をファイルに書き込む ( ヌル文字は含まない )。
fwrite 指定された数の項目をファイルに書き込む。
sprintf, swprintf, vsprintf, vswprintf メモリ内の文字列に書式設定された出力を実行する。
標準 I/O---ファイル内の位置設定
fflush 指定されたファイルに保存するためにバッファに格納されている情報を RMS に送信する。
fgetpos ストリームのファイル位置指示子の現在の値を格納する。
fsetpos ポインタが指しているオブジェクトの値に従って,ストリームのファイル位置指示子を設定する。
fseek fseeko ファイルの位置をファイル内の指定されたバイト・オフセットに設定する。
ftell ftello 指定されたストリーム・ファイルに対する現在のバイト・オフセットを返す。
rewind ファイルの位置を先頭に設定する。
標準 I/O---追加の標準 I/O 関数とマクロ
access ファイルを調べて,指定されたアクセス・モードが許可されているかどうかを確認する。
clearerr ファイルに対するエラー指示子およびファイルの終端 (EOF) 指示子をリセットする。
feof ファイルを調べて,ファイルの終端 (EOF) に到達したかどうかを確認する。
ferror ファイルへの書き込みまたは読み込みでエラーが発生した場合,0 以外の整数を返す。
fgetname ファイル・ポインタに関連付けられているファイル指定を返す。
fileno 指定されたファイルを識別する整数のファイル記述子を返す。
ftruncate ファイルを指定された位置で切り捨てる。
fwait 保留中の非同期 I/O の終了を待つ。
fwide ストリームの単位を設定する。
mktemp テンプレートから固有の名前を作成する。
remove, delete ファイルを削除する。
rename 既存のファイルに新しい名前を付ける。
setbuf, setvbuf バッファを入力ファイルまたは出力ファイルに関連付ける。
tmpfile 一時ファイルを作成して更新のためにオープンする。
tmpnam 他の関数呼び出しでファイル名引数の代わりに使用できる文字列を作成する。
端末 I/O---ファイルからの読み込み
getchar, getwchar 標準入力 ( stdin ) から 1 文字を読み込む。
gets 標準入力 ( stdin ) から 1 行を読み込む。
scanf, wscanf, vscanf, vwscanf 標準入力から書式設定された入力を実行する。
端末 I/O---ファイルへの書き込み
printf, wprintf, vprintf, vwprintf 標準出力 ( stdout ) に書式設定された出力を実行する。
putchar, putwchar 標準出力に 1 文字を書き込み,その文字を返す。
puts 標準出力に文字列と改行文字を書き込む。



2.1 RTL ルーチンからの RMS の使用

HP C RTL の I/O 関数とマクロを使用してファイルを作成する場合,次の属性も含めて,多くの RMS ファイル属性の値を指定できます。

  • 割り当てサイズ

  • ブロック・サイズ

  • デフォルトのファイル拡張

  • デフォルトのファイル名

  • ファイル・アクセス・コンテキスト・オプション

  • ファイル処理オプション

  • ファイル共用オプション

  • マルチブロック・カウント

  • マルチバッファ・カウント

  • 最大レコード・サイズ

  • レコード属性

  • レコード・フォーマット

  • レコード処理オプション

これらの値の詳細については,「リファレンス・セクション」の creat関数の説明を参照してください。

これらの値は, openfopenfreopenなどの関数でも設定できます。

RMS の詳細については,『HP C User's Guide for OpenVMS Systems』を参照してください。

2.2 UNIX I/O と標準 I/O

UNIX I/O 関数は UNIX システム・サービスであり,現在は ISO POSIX-1 (ISO Portable Operating System Interface) によって標準化されています。

UNIX I/O 関数では,ファイル記述子を使用してファイルにアクセスします。 ファイル記述子とは,ファイルを識別する整数です。ファイル記述子は次のように宣言されます。ここで, file_desc はファイル記述子の名前です。

int  file_desc; 

creatなどの UNIX I/O 関数は,ファイル記述子をファイルに関連付けます。次の例について考えてみましょう。

file_desc1 = creat("INFILE.DAT", 0, "rat=cr", "rfm=var"); 

この文は,ファイル・アクセス・モード 0,キャリッジ・リターン制御,可変長レコードで INFILE.DAT というファイルを作成し,変数 file_desc1をファイルに関連付けます。読み込みや書き込みなどの操作のためにファイルにアクセスするときは,ファイル記述子を使用してファイルを参照します。次の例を参照してください。

write(file_desc1, buffer, sizeof(buffer)); 

この文はバッファの内容を INFILE.DAT に書き込みます。

標準 I/O 関数やマクロの代わりに, UNIX I/O 関数やマクロを使用しなければならない状況があります。この 2 種類の I/O の詳細についてと,各 I/O で RMS ファイル・フォーマットがどのように操作されるかについては, 第 1 章 を参照してください。

標準 I/O 関数は ANSI C 標準で指定されています。

標準 I/O 関数では,UNIX I/O の機能にバッファリング機能が追加され,ファイルにアクセスするためにファイル・ポインタが使用されます。 ファイル・ポインタとは, FILE *型のオブジェクトです。これは,次に示すように, <stdio.h>ヘッダ・ファイルに定義されている typedefです。

typedef  struct  _iobuf  *FILE; 

_iobuf識別子も <stdio.h>に定義されています。

ファイル・ポインタを宣言するには,次のように指定します。

FILE  *file_ptr; 

既存のファイルの作成やオープンには,標準 I/O の fopen関数を使用します。次の例を参照してください。

#include <stdio.h> 
 
main() 
{ 
   FILE  *outfile; 
   outfile  =  fopen("DISKFILE.DAT", "w+"); 
      . 
      . 
      . 
} 

この例では,ファイル DISKFILE.DAT が書き込み更新アクセスのためにオープンされます。

HP C RTL では,ファイル記述子とファイル・ポインタの間の変換のために,次の関数が用意されています。

  • fileno---指定されたファイル・ポインタに関連付けられているファイル記述子を返します。

  • fdopen--- opencreatdupdup2pipe関数から返されたファイル記述子にファイル・ポインタを関連付けます。



2.3 ワイド文字 I/O 関数とバイト I/O 関数

ワイド文字 I/O 関数は,大部分のバイト I/O 関数と同様の動作を実行します。ただし,基本単位としてワイド文字を取り扱う点がバイト I/O 関数と異なります。

しかし,外部表現 (ファイル内の表現) はワイド文字ではなく,マルチバイト文字シーケンスです。ワイド文字で書式設定された入出力関数の場合,次のことに注意してください。

  • ワイド文字で書式設定された入力関数 ( たとえば fwscanfなど ) は,指定されたディレクティブとは無関係に,常にファイルからマルチバイト文字シーケンスを読み込み,このシーケンスをワイド文字シーケンスに変換してから,その後の処理を実行します。

  • ワイド文字で書式設定された出力関数 ( たとえば fwprintfなど ) は,最初にワイド文字型の引数をマルチバイト文字シーケンスに変換した後,オペレーティング・システムの出力プリミティブを呼び出すことにより,ワイド文字を出力ファイルに書き込みます。

バイト I/O 関数は状態依存エンコーディングを取り扱うことができません。ワイド文字 I/O 関数はこのような操作が可能です。ワイド文字 I/O 関数は,各ワイド文字ストリームを mbstate_t型の変換状態オブジェクトに関連付けることにより,この操作を実行します。

ワイド文字 I/O 関数は次のとおりです。

fgetwc        fputwc        fwscanf       fwprintf       ungetwc 
fgetws        fputws        wscanf        wprintf 
getwc         putwc                       vfwprintf 
getwchar      putwchar                    vwprintf 

バイト I/O 関数は次のとおりです。

fgetc         fputc         fscanf        fprintf         ungetc 
fgets         fputs         scanf         printf          fread 
getc          putc                        vfprinf         fwrite 
gets          puts                        vprintf 
getchar       putchar 

ワイド文字入力関数は, fgetwc関数を連続して呼び出すことによって書き込まれる場合,ストリームからマルチバイト文字を読み込み,これらの文字をワイド文字に変換します。各変換は,ストリーム独自の mbstate_tオブジェクトによって記述される変換状態を指定して mbrtowc関数を呼び出したかのように実行されます。

ワイド文字出力関数は, fputwc関数を連続して呼び出すことにより書き込んだかのように,ワイド文字をマルチバイト文字に変換し,これらの文字をストリームに書き込みます。各変換は,I/O ストリームの独自の mbstate_tオブジェクトによって記述される変換状態を指定して wcrtomb関数を呼び出したかのように実行されます。

ワイド文字 I/O 関数で不正なマルチバイト文字が検出されると, errnoが EILSEQ に設定されます。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.