.\"
.TH FMEMOPEN 3 2015\-01\-22 GNU "Linux Programmer's Manual"
.SH 名前
-fmemopen, open_memstream, open_wmemstream \- メモリをストリームとしてオープンする
+fmemopen, open_memstream, open_wmemstream \- ã\83¡ã\83¢ã\83ªã\83¼ã\82\92ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81¨ã\81\97ã\81¦ã\82ªã\83¼ã\83\97ã\83³ã\81\99ã\82\8b
.SH 書式
.nf
\fB#include <stdio.h>\fP
.PD
.SH 説明
\fBfmemopen\fP() 関数は、ストリームをオープンし、そのストリームに \fImode\fP で指定されたアクセス許可を設定する。
-ã\81\9dã\81®ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\82\92é\80\9aã\81\98ã\81¦ã\80\81 \fIbuf\fP ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fæ\96\87å\97å\88\97ã\82\84ã\83¡ã\83¢ã\83ªã\83\90ã\83\83ã\83\95ã\82¡ã\81¸ã\81®èªã\81¿æ\9b¸ã\81\8dã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ã\81\93ã\81®ã\83\90ã\83\83ã\83\95ã\82¡は少なくとも \fIsize\fP
+ã\81\9dã\81®ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\82\92é\80\9aã\81\98ã\81¦ã\80\81 \fIbuf\fP ã\81§æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fæ\96\87å\97å\88\97ã\82\84ã\83¡ã\83¢ã\83ªã\83¼ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¸ã\81®èªã\81¿æ\9b¸ã\81\8dã\81\8cã\81§ã\81\8dã\82\8bã\80\82 ã\81\93ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼は少なくとも \fIsize\fP
バイトの長さでなければならない。
.PP
引き数 \fImode\fP は \fBfopen\fP(3) の場合と同じである。 \fImode\fP で追記モード
-(append mode) が指定された場合、ファイル位置の初期値は バッファ中の
+(append mode) が指定された場合、ファイル位置の初期値は バッファー中の
最初のヌルバイト (\(aq\e0\(aq) の位置に設定される。
-それ以外の場合は、ファイル位置の初期値はバッファの先頭になる。
+ã\81\9dã\82\8c以å¤\96ã\81®å ´å\90\88ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ä½\8dç½®ã\81®å\88\9dæ\9c\9få\80¤ã\81¯ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®å\85\88é ã\81«ã\81ªã\82\8bã\80\82
glibc 2.9 以降では、文字 \(aqb\(aq を \fImode\fP の二番目の文字として指定
することができる。 この文字は「バイナリ」モードを指定するものである。
このモードでは、書き込み時に文字列終端のヌルバイトが黙って追加 される
ことはない。また、 \fBfseek\fP(3) \fBSEEK_END\fP は、文字列の長さからの相対値
-ではなく、バッファの末尾 (\fIsize\fP で指定した値) からの相対値となる。
+ã\81§ã\81¯ã\81ªã\81\8fã\80\81ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®æ\9c«å°¾ (\fIsize\fP ã\81§æ\8c\87å®\9aã\81\97ã\81\9få\80¤) ã\81\8bã\82\89ã\81®ç\9b¸å¯¾å\80¤ã\81¨ã\81ªã\82\8bã\80\82
.PP
書き込み用にオープンされたストリームをフラッシュ (\fBfflush\fP(3)) やクローズ (\fBfclose\fP(3)) した時に、
-(ã\83\90ã\83\83ã\83\95ã\82¡ã\81«ç©ºã\81\8dã\81\8cã\81\82ã\82\8cã\81°) ã\83\8cã\83«ã\83\90ã\82¤ã\83\88ã\81\8cã\83\90ã\83\83ã\83\95ã\82¡ã\81®æ\9c«å°¾ã\81«æ\9b¸ã\81\8dè¾¼ã\81¾ã\82\8cã\82\8bã\80\82 ã\81\93ã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81¯ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯ ã\83\90ã\83\83ã\83\95ã\82¡に 1バイト余裕を作る
+(ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«ç©ºã\81\8dã\81\8cã\81\82ã\82\8cã\81°) ã\83\8cã\83«ã\83\90ã\82¤ã\83\88ã\81\8cã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®æ\9c«å°¾ã\81«æ\9b¸ã\81\8dè¾¼ã\81¾ã\82\8cã\82\8bã\80\82 ã\81\93ã\81®ã\82\88ã\81\86ã\81«ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81¯ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯ ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼に 1バイト余裕を作る
(\fIsize\fP にこの 1バイトを含めた値を指定する) 必要がある。
-バッファに \fIsize\fP バイトよりたくさん書き込もうとした場合には、エラーとなる。 (デフォルトでは、このようなエラーが見えるのは \fIstdio\fP
-バッファがフラッシュされた時だけである。 以下の呼び出しを使ってバッファリングを無効にする方法は、 出力操作を行った時点でエラーを検出するのに役立つ。
+バッファーに \fIsize\fP バイトよりたくさん書き込もうとした場合には、エラーとなる。 (デフォルトでは、このようなエラーが見えるのは
+\fIstdio\fP バッファーがフラッシュされた時だけである。 以下の呼び出しを使ってバッファーリングを無効にする方法は、
+出力操作を行った時点でエラーを検出するのに役立つ。
setbuf(stdream, NULL);
-別の方法としては、 以下のように、 呼び出し側が明示的に stdio ストリームバッファとして \fIbuf\fP
-ã\82\92æ\8c\87å®\9aã\81\97ã\80\81ã\83\90ã\83\83ã\83\95ã\82¡ã\81®æ\8c\87å®\9aæ\99\82ã\81«ã\83\90ã\83\83ã\83\95ã\82¡のサイズを stdio に教える方法がある。
+å\88¥ã\81®æ\96¹æ³\95ã\81¨ã\81\97ã\81¦ã\81¯ã\80\81 以ä¸\8bã\81®ã\82\88ã\81\86ã\81«ã\80\81 å\91¼ã\81³å\87ºã\81\97å\81´ã\81\8cæ\98\8e示ç\9a\84ã\81« stdio ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¨ã\81\97ã\81¦ \fIbuf\fP
+ã\82\92æ\8c\87å®\9aã\81\97ã\80\81ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®æ\8c\87å®\9aæ\99\82ã\81«ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼のサイズを stdio に教える方法がある。
setbuffer(stream, buf, size);
.\" and
.\" http://sources.redhat.com/ml/libc-alpha/2006-04/msg00064.html
.PP
-読み出し用にオープンされたストリームでは、 バッファ内にヌルバイト (\(aq\e0\(aq) があっても 読み出し操作がファイル末尾
-(end\-of\-file) ã\82\92è¿\94ã\81\99ã\81\93ã\81¨ã\81¯ã\81ªã\81\84ã\80\82 ã\83\90ã\83\83ã\83\95ã\82¡ã\81\8bã\82\89ã\81®èªã\81¿å\87ºã\81\97ã\81§ã\83\95ã\82¡ã\82¤ã\83«æ\9c«å°¾ã\81\8cè¿\94ã\82\8bã\81®ã\81¯ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83\9dã\82¤ã\83³ã\82¿ã\81\8cã\83\90ã\83\83ã\83\95ã\82¡ã\81®å\85\88é ã\81\8bã\82\89 \fIsize\fP
-バイトを越えて先に進もうとした場合だけである。
+読み出し用にオープンされたストリームでは、 バッファー内にヌルバイト (\(aq\e0\(aq) があっても 読み出し操作がファイル末尾
+(end\-of\-file) ã\82\92è¿\94ã\81\99ã\81\93ã\81¨ã\81¯ã\81ªã\81\84ã\80\82 ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8bã\82\89ã\81®èªã\81¿å\87ºã\81\97ã\81§ã\83\95ã\82¡ã\82¤ã\83«æ\9c«å°¾ã\81\8cè¿\94ã\82\8bã\81®ã\81¯ã\80\81 ã\83\95ã\82¡ã\82¤ã\83«ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\81\8cã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®å\85\88é ã\81\8bã\82\89
+\fIsize\fP バイトを越えて先に進もうとした場合だけである。
.PP
-\fIbuf\fP に NULL が指定された場合、 \fBfmemopen\fP() は動的に \fIsize\fP バイトの長さのバッファを確保する。
-この方法は、一時バッファにデータの書き込みを行ってから、 その内容を再度読み出すようなアプリケーションで有用である。
-ã\81\93ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\81¯ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81\8cã\82¯ã\83ã\83¼ã\82ºã\81\95ã\82\8cã\82\8bã\81¨ã\81\8dã\81«è\87ªå\8b\95ç\9a\84ã\81«è§£æ\94¾ã\81\95ã\82\8cã\82\8bã\80\82 å\91¼ã\81³å\87ºã\81\97å\85\83ã\81\8bã\82\89ã\81¯ã\81\93ã\81®é\96¢æ\95°ã\81\8cå\89²ã\82\8aå½\93ã\81¦ã\81\9fä¸\80æ\99\82ã\83\90ã\83\83ã\83\95ã\82¡ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿値を
+\fIbuf\fP ã\81« NULL ã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cã\81\9få ´å\90\88ã\80\81 \fBfmemopen\fP() ã\81¯å\8b\95ç\9a\84ã\81« \fIsize\fP ã\83\90ã\82¤ã\83\88ã\81®é\95·ã\81\95ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92確ä¿\9dã\81\99ã\82\8bã\80\82
+ã\81\93ã\81®æ\96¹æ³\95ã\81¯ã\80\81ä¸\80æ\99\82ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«ã\83\87ã\83¼ã\82¿ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82\92è¡\8cã\81£ã\81¦ã\81\8bã\82\89ã\80\81 ã\81\9dã\81®å\86\85容ã\82\92å\86\8d度èªã\81¿å\87ºã\81\99ã\82\88ã\81\86ã\81ªã\82¢ã\83\97ã\83ªã\82±ã\83¼ã\82·ã\83§ã\83³ã\81§æ\9c\89ç\94¨ã\81§ã\81\82ã\82\8bã\80\82
+ã\81\93ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¯ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81\8cã\82¯ã\83ã\83¼ã\82ºã\81\95ã\82\8cã\82\8bã\81¨ã\81\8dã\81«è\87ªå\8b\95ç\9a\84ã\81«è§£æ\94¾ã\81\95ã\82\8cã\82\8bã\80\82 å\91¼ã\81³å\87ºã\81\97å\85\83ã\81\8bã\82\89ã\81¯ã\81\93ã\81®é\96¢æ\95°ã\81\8cå\89²ã\82\8aå½\93ã\81¦ã\81\9fä¸\80æ\99\82ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼値を
知る方法は存在しない点に注意 (下記の \fBopen_memstream\fP() も参照)。
-\fBopen_memstream\fP() é\96¢æ\95°ã\81¯ã\80\81ã\83\90ã\83\83ã\83\95ã\82¡ã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ç\94¨ã\81«ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\82\92ã\82ªã\83¼ã\83\97ã\83³ã\81\99ã\82\8bã\80\82 ã\83\90ã\83\83ã\83\95ã\82¡は (\fBmalloc\fP(3)
-を使って) 動的に割り当てられ、必要に応じて自動的に伸長する。 ストリームをクローズした後で、呼び出し元はこのバッファを \fBfree\fP(3)
+\fBopen_memstream\fP() é\96¢æ\95°ã\81¯ã\80\81ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ç\94¨ã\81«ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\82\92ã\82ªã\83¼ã\83\97ã\83³ã\81\99ã\82\8bã\80\82 ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼は (\fBmalloc\fP(3)
+ã\82\92使ã\81£ã\81¦) å\8b\95ç\9a\84ã\81«å\89²ã\82\8aå½\93ã\81¦ã\82\89ã\82\8cã\80\81å¿\85è¦\81ã\81«å¿\9cã\81\98ã\81¦è\87ªå\8b\95ç\9a\84ã\81«ä¼¸é\95·ã\81\99ã\82\8bã\80\82 ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\82\92ã\82¯ã\83ã\83¼ã\82ºã\81\97ã\81\9få¾\8cã\81§ã\80\81å\91¼ã\81³å\87ºã\81\97å\85\83ã\81¯ã\81\93ã\81®ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92 \fBfree\fP(3)
すべきである。
このストリームが クローズ (\fBfclose\fP(3)) されたりフラッシュ (\fBfflush\fP(3)) された時に、 \fIptr\fP と
-\fIsizeloc\fP ã\81®å\80¤ã\81¯ã\81\9dã\82\8cã\81\9eã\82\8cã\83\90ã\83\83ã\83\95ã\82¡ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿とそのサイズに更新される。 これらの値は、呼び出し元がそのストリームに新たな書き込みを
+\fIsizeloc\fP ã\81®å\80¤ã\81¯ã\81\9dã\82\8cã\81\9eã\82\8cã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81¸ã\81®ã\83\9dã\82¤ã\83³ã\82¿ã\83¼とそのサイズに更新される。 これらの値は、呼び出し元がそのストリームに新たな書き込みを
行わない場合に限り有効である。 ストリームに書き込みを行った際には、これらの変数を参照する前に ストリームを再度フラッシュしなければならない。
-バッファ末尾のヌルバイトは保持される。 このヌルバイトは \fIsizeloc\fP に格納されるサイズには「含まれない」。
+バッファー末尾のヌルバイトは保持される。 このヌルバイトは \fIsizeloc\fP に格納されるサイズには「含まれない」。
ストリームのファイル位置は \fBfseek\fP(3) や \fBfseeko\fP(3) で変更できる。
すでにデータが書き込まれた領域の末尾より先にファイル位置を動かすと、 その間の領域は 0 で埋められる。
と同様だが、バイトではなくワイド文字に対して操作を行う点が異なる。
.SH 返り値
成功して終了した場合には、 \fBfmemopen\fP(), \fBopen_memstream\fP(), \fBopen_wmemstream\fP() は
-\fIFILE\fP ポインタを返す。 失敗した場合は、 NULL を返し、 \fIerrno\fP にエラーを示す値をセットする。
+\fIFILE\fP ã\83\9dã\82¤ã\83³ã\82¿ã\83¼ã\82\92è¿\94ã\81\99ã\80\82 失æ\95\97ã\81\97ã\81\9få ´å\90\88ã\81¯ã\80\81 NULL ã\82\92è¿\94ã\81\97ã\80\81 \fIerrno\fP ã\81«ã\82¨ã\83©ã\83¼ã\82\92示ã\81\99å\80¤ã\82\92ã\82»ã\83\83ã\83\88ã\81\99ã\82\8bã\80\82
.SH バージョン
\fBfmemopen\fP() と \fBopen_memstream\fP() は glibc 1.0.x ですでに利用可能であった。
\fBopen_wmemstream\fP() は glibc 2.4 以降で利用可能である。
\(aqb\(aq が指定された場合の扱いは実装依存であることを許容するように
標準規格が修正されており、glibc の \(aqb\(aq の扱いは許されている。
.SH 注意
-これらの関数が返すファイルストリームに対応するファイル ディスクリプタはない (つまり、返されたストリームに対して \fBfileno\fP(3)
+ã\81\93ã\82\8cã\82\89ã\81®é\96¢æ\95°ã\81\8cè¿\94ã\81\99ã\83\95ã\82¡ã\82¤ã\83«ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81«å¯¾å¿\9cã\81\99ã\82\8bã\83\95ã\82¡ã\82¤ã\83« ã\83\87ã\82£ã\82¹ã\82¯ã\83ªã\83\97ã\82¿ã\83¼ã\81¯ã\81ªã\81\84 (ã\81¤ã\81¾ã\82\8aã\80\81è¿\94ã\81\95ã\82\8cã\81\9fã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81«å¯¾ã\81\97ã\81¦ \fBfileno\fP(3)
を呼び出すとエラーが返ることになる)。
.SH バグ
.\" http://sourceware.org/bugzilla/show_bug.cgi?id=1996
バージョン 2.7 より前の glibc では、 \fBopen_memstream\fP()
-で作成されたストリームの末尾より先にファイル位置を動かしても、 バッファが伸長されず、 \fBfseek\fP(3) が失敗し \-1 が返る。
+ã\81§ä½\9cæ\88\90ã\81\95ã\82\8cã\81\9fã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81®æ\9c«å°¾ã\82\88ã\82\8aå\85\88ã\81«ã\83\95ã\82¡ã\82¤ã\83«ä½\8dç½®ã\82\92å\8b\95ã\81\8bã\81\97ã\81¦ã\82\82ã\80\81 ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81\8c伸é\95·ã\81\95ã\82\8cã\81\9aã\80\81 \fBfseek\fP(3) ã\81\8c失æ\95\97ã\81\97 \-1 ã\81\8cè¿\94ã\82\8bã\80\82
.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=11216
\fIsize\fP に 0 が指定された場合、 \fBfmemopen\fP() はエラー \fBEINVAL\fP で失敗
.\" FIXME . http://sourceware.org/bugzilla/show_bug.cgi?id=13151
\fBfmemopen\fP() の \fImode\fP 引き数に追記モード ("a" や "a+") を指定し、
\fIsize\fP 引き数で指定した範囲の \fIbuf\fP 内にヌルバイトがない場合、
-POSIX.1\-2008 では、ファイル位置の初期値はバッファの末尾の直後の
+POSIX.1\-2008 ã\81§ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ä½\8dç½®ã\81®å\88\9dæ\9c\9få\80¤ã\81¯ã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81®æ\9c«å°¾ã\81®ç\9b´å¾\8cã\81®
バイトに設定すべきとされている。しかし、glibc の \fBfmemopen\fP() では
この場合ファイル位置は \-1 に設定される。
ABI (Application Binary Interface) が黙って変更された。
それ以前の \fBfmemopen\fP() では \fImode\fP 内の \(aqb\(aq は無視されていた。
.SH 例
-このプログラムは \fBfmemopen\fP() を使って出力バッファをオープンし、 \fBopen_memstream\fP()
-を使って動的にサイズが変化する出力バッファをオープンしている。 (プログラムの第一コマンドライン引き数から取った) 入力文字列を
-スキャンして整数を読み込み、これらの整数の二乗を出力バッファに書き出す。 このプログラムの実行例は以下のようになる。
+ã\81\93ã\81®ã\83\97ã\83ã\82°ã\83©ã\83 ã\81¯ \fBfmemopen\fP() ã\82\92使ã\81£ã\81¦å\87ºå\8a\9bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92ã\82ªã\83¼ã\83\97ã\83³ã\81\97ã\80\81 \fBopen_memstream\fP()
+ã\82\92使ã\81£ã\81¦å\8b\95ç\9a\84ã\81«ã\82µã\82¤ã\82ºã\81\8cå¤\89å\8c\96ã\81\99ã\82\8bå\87ºå\8a\9bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\82\92ã\82ªã\83¼ã\83\97ã\83³ã\81\97ã\81¦ã\81\84ã\82\8bã\80\82 (ã\83\97ã\83ã\82°ã\83©ã\83 ã\81®ç¬¬ä¸\80ã\82³ã\83\9eã\83³ã\83\89ã\83©ã\82¤ã\83³å¼\95ã\81\8dæ\95°ã\81\8bã\82\89å\8f\96ã\81£ã\81\9f) å\85¥å\8a\9bæ\96\87å\97å\88\97ã\82\92
+ã\82¹ã\82ã\83£ã\83³ã\81\97ã\81¦æ\95´æ\95°ã\82\92èªã\81¿è¾¼ã\81¿ã\80\81ã\81\93ã\82\8cã\82\89ã\81®æ\95´æ\95°ã\81®äº\8cä¹\97ã\82\92å\87ºå\8a\9bã\83\90ã\83\83ã\83\95ã\82¡ã\83¼ã\81«æ\9b¸ã\81\8då\87ºã\81\99ã\80\82 ã\81\93ã\81®ã\83\97ã\83ã\82°ã\83©ã\83 ã\81®å®\9fè¡\8cä¾\8bã\81¯ä»¥ä¸\8bã\81®ã\82\88ã\81\86ã\81«ã\81ªã\82\8bã\80\82
.in +4n
.nf
.SH 関連項目
\fBfopen\fP(3), \fBfopencookie\fP(3)
.SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man\-pages/ に書かれている。