OSDN Git Service

b07074791f5c86f3887e8630a4686a36efc77dca
[linuxjm/LDP_man-pages.git] / release / man3 / fmemopen.3
1 .\" Copyright 2005 walter harms (walter.harms@informatik.uni-oldenburg.de),
2 .\" and Copyright 2005 Michael Kerrisk <mtk.manpages@gmail.com>
3 .\" Distributed under the GPL.
4 .\" 2008-12-04, Petr Baudis <pasky@suse.cz>: Document open_wmemstream()
5 .\"
6 .\" Japanese Version Copyright (c) 2005, 2006 Akihiro MOTOKI
7 .\"                     all rights reserved.
8 .\" Translated 2005-12-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
9 .\" Updated 2006-01-20, Akihiro MOTOKI
10 .\" Updated 2006-07-20, Akihiro MOTOKI
11 .\" Updated 2008-11-08, Akihiro MOTOKI, LDP v3.13
12 .\" Updated 2010-04-18, Akihiro MOTOKI, LDP v3.24
13 .\"
14 .TH FMEMOPEN 3 2010-09-15 "GNU" "Linux Programmer's Manual"
15 .SH Ì¾Á°
16 fmemopen, open_memstream, open_wmemstream \-  ¥á¥â¥ê¤ò¥¹¥È¥ê¡¼¥à¤È¤·¤Æ¥ª¡¼¥×¥ó¤¹¤ë
17 .SH ½ñ¼°
18 .nf
19 .B #include <stdio.h>
20
21 .BI "FILE *fmemopen(void *"buf ", size_t "size ", const char *" mode ");"
22
23 .BI "FILE *open_memstream(char **" ptr ", size_t *" sizeloc );
24
25 .B #include <wchar.h>
26
27 .BI "FILE *open_wmemstream(wchar_t **" ptr ", size_t *" sizeloc );
28 .fi
29 .fi
30 .sp
31 .in -4n
32 glibc ¸þ¤±¤Îµ¡Ç½¸¡ºº¥Þ¥¯¥í¤ÎÍ×·ï
33 .RB ( feature_test_macros (7)
34 »²¾È):
35 .in
36 .sp
37 .BR fmemopen (),
38 .BR open_memstream (),
39 .BR open_wmemstream ():
40 .PD 0
41 .ad l
42 .RS 4
43 .TP 4
44 glibc 2.10 °Ê¹ß:
45 _XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L
46 .TP
47 glibc 2.10 ¤è¤êÁ°:
48 _GNU_SOURCE
49 .RE
50 .ad
51 .PD
52 .SH ÀâÌÀ
53 .BR fmemopen ()
54 ´Ø¿ô¤Ï¡¢¥¹¥È¥ê¡¼¥à¤ò¥ª¡¼¥×¥ó¤·¡¢¤½¤Î¥¹¥È¥ê¡¼¥à¤Ë
55 .I mode
56 ¤Ç»ØÄꤵ¤ì¤¿¥¢¥¯¥»¥¹µö²Ä¤òÀßÄꤹ¤ë¡£
57 ¤½¤Î¥¹¥È¥ê¡¼¥à¤òÄ̤¸¤Æ¡¢
58 .I buf
59 ¤Ç»ØÄꤵ¤ì¤¿Ê¸»úÎó¤ä¥á¥â¥ê¥Ð¥Ã¥Õ¥¡¤Ø¤ÎÆɤ߽ñ¤­¤¬¤Ç¤­¤ë¡£
60 ¤³¤Î¥Ð¥Ã¥Õ¥¡¤Ï¾¯¤Ê¤¯¤È¤â
61 .I size
62 ¥Ð¥¤¥È¤ÎŤµ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
63 .PP
64 °ú¤­¿ô
65 .I mode
66 ¤Ï
67 .BR fopen (3)
68 ¤Î¾ì¹ç¤ÈƱ¤¸¤Ç¤¢¤ë¡£
69 .I mode
70 ¤ÇÄɵ­¥â¡¼¥É (append mode) ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¥Õ¥¡¥¤¥ë°ÌÃ֤νé´üÃͤÏ
71 ¥Ð¥Ã¥Õ¥¡Ãæ¤ÎºÇ½é¤Î NULL ¥Ð¥¤¥È (\(aq\\0\(aq) ¤Î°ÌÃÖ¤ËÀßÄꤵ¤ì¤ë¡£
72 ¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¥Õ¥¡¥¤¥ë°ÌÃ֤νé´üÃͤϥХåե¡¤ÎÀèƬ¤Ë¤Ê¤ë¡£
73 glibc 2.9 °Ê¹ß¤Ç¤Ï¡¢Ê¸»ú 'b' ¤ò
74 .I mode
75 ¤ÎÆóÈÖÌܤÎʸ»ú¤È¤·¤Æ»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
76 ¤³¤Îʸ»ú¤Ï¡Ö¥Ð¥¤¥Ê¥ê¡×¥â¡¼¥É¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¡£
77 ¤³¤Î¥â¡¼¥É¤Ç¤Ï¡¢½ñ¤­¹þ¤ß»þ¤Ëʸ»úÎó½ªÃ¼¤Î¥Ì¥ë¥Ð¥¤¥È¤¬ÌۤäÆÄɲÃ
78 ¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£¤Þ¤¿¡¢
79 .BR fseek (3)
80 .B SEEK_END
81 ¤Ï¡¢Ê¸»úÎó¤ÎŤµ¤«¤é¤ÎÁêÂÐÃͤǤϤʤ¯¡¢¥Ð¥Ã¥Õ¥¡¤ÎËöÈø
82 .RI ( size
83 ¤Ç»ØÄꤷ¤¿ÃÍ) ¤«¤é¤ÎÁêÂÐÃͤȤʤ롣
84 .PP
85 ½ñ¤­¹þ¤ßÍѤ˥ª¡¼¥×¥ó¤µ¤ì¤¿¥¹¥È¥ê¡¼¥à¤ò¥Õ¥é¥Ã¥·¥å
86 .RB ( fflush (3))
87 ¤ä¥¯¥í¡¼¥º
88 .RB ( fclose (3))
89 ¤·¤¿»þ¤Ë¡¢
90 (¥Ð¥Ã¥Õ¥¡¤Ë¶õ¤­¤¬¤¢¤ì¤Ð) NULL ¥Ð¥¤¥È¤¬¥Ð¥Ã¥Õ¥¡¤ÎËöÈø¤Ë½ñ¤­¹þ¤Þ¤ì¤ë¡£
91 ¤³¤Î¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤Ï
92 ¥Ð¥Ã¥Õ¥¡¤Ë 1¥Ð¥¤¥È;͵¤òºî¤ë
93 .RI ( size
94 ¤Ë¤³¤Î 1¥Ð¥¤¥È¤ò´Þ¤á¤¿Ãͤò»ØÄꤹ¤ë) É¬Íפ¬¤¢¤ë¡£
95
96 ¥Ð¥Ã¥Õ¥¡¤Ë
97 .I size
98 ¥Ð¥¤¥È¤è¤ê¤¿¤¯¤µ¤ó½ñ¤­¹þ¤â¤¦¤È¤·¤¿¾ì¹ç¤Ë¤Ï¡¢¥¨¥é¡¼¤È¤Ê¤ë¡£
99 (¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¤³¤Î¤è¤¦¤Ê¥¨¥é¡¼¤¬¸«¤¨¤ë¤Î¤Ï
100 .I stdio
101 ¥Ð¥Ã¥Õ¥¡¤¬¥Õ¥é¥Ã¥·¥å¤µ¤ì¤¿»þ¤À¤±¤Ç¤¢¤ë¡£
102 .I setbuf(fp,\ NULL)
103 ¤ò»È¤Ã¤Æ¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤ò̵¸ú¤Ë¤¹¤ëÊýË¡¤Ï¡¢
104 ½ÐÎÏÁàºî¤ò¹Ô¤Ã¤¿»þÅÀ¤Ç¥¨¥é¡¼¤ò¸¡½Ð¤¹¤ë¤Î¤ËÌòΩ¤Ä¡£
105 Ê̤ÎÊýË¡¤È¤·¤Æ¤Ï¡¢
106 .IR "setbuffer(fp, buf, size)"
107 ¤ò»È¤Ã¤Æ¡¢¸Æ¤Ó½Ð¤·Â¦¤¬ÌÀ¼¨Åª¤Ë
108 stdio ¥¹¥È¥ê¡¼¥à¥Ð¥Ã¥Õ¥¡¤È¤·¤Æ
109 .I buf
110 ¤ò»ØÄꤷ¡¢¥Ð¥Ã¥Õ¥¡¤Î»ØÄê»þ¤Ë¥Ð¥Ã¥Õ¥¡¤Î¥µ¥¤¥º¤ò
111 stdio ¤Ë¶µ¤¨¤ëÊýË¡¤¬¤¢¤ë¡£)
112 .\" See http://sourceware.org/bugzilla/show_bug.cgi?id=1995
113 .\" and
114 .\" http://sources.redhat.com/ml/libc-alpha/2006-04/msg00064.html
115 .PP
116 Æɤ߽Ф·ÍѤ˥ª¡¼¥×¥ó¤µ¤ì¤¿¥¹¥È¥ê¡¼¥à¤Ç¤Ï¡¢
117 ¥Ð¥Ã¥Õ¥¡Æâ¤Ë NULL ¥Ð¥¤¥È (\(aq\\0\(aq) ¤¬¤¢¤Ã¤Æ¤â
118 Æɤ߽Ф·Áàºî¤¬¥Õ¥¡¥¤¥ëËöÈø (end-of-file) ¤òÊÖ¤¹¤³¤È¤Ï¤Ê¤¤¡£
119 ¥Ð¥Ã¥Õ¥¡¤«¤é¤ÎÆɤ߽Ф·¤Ç¥Õ¥¡¥¤¥ëËöÈø¤¬ÊÖ¤ë¤Î¤Ï¡¢
120 ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤¬¥Ð¥Ã¥Õ¥¡¤ÎÀèƬ¤«¤é
121 .I size
122 ¥Ð¥¤¥È¤ò±Û¤¨¤ÆÀè¤Ë¿Ê¤â¤¦¤È¤·¤¿¾ì¹ç¤À¤±¤Ç¤¢¤ë¡£
123 .PP
124 .I buf
125 ¤Ë NULL ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢
126 .BR fmemopen ()
127 ¤ÏưŪ¤Ë
128 .I size
129 ¥Ð¥¤¥È¤ÎŤµ¤Î¥Ð¥Ã¥Õ¥¡¤ò³ÎÊݤ¹¤ë¡£
130 ¤³¤ÎÊýË¡¤Ï¡¢°ì»þ¥Ð¥Ã¥Õ¥¡¤Ë¥Ç¡¼¥¿¤Î½ñ¤­¹þ¤ß¤ò¹Ô¤Ã¤Æ¤«¤é¡¢
131 ¤½¤ÎÆâÍƤòºÆÅÙÆɤ߽Ф¹¤è¤¦¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÇÍ­ÍѤǤ¢¤ë¡£
132 ¤³¤Î¥Ð¥Ã¥Õ¥¡¤Ï¥¹¥È¥ê¡¼¥à¤¬¥¯¥í¡¼¥º¤µ¤ì¤ë¤È¤­¤Ë¼«Æ°Åª¤Ë²òÊü¤µ¤ì¤ë¡£
133 ¸Æ¤Ó½Ð¤·¸µ¤«¤é¤Ï¤³¤Î´Ø¿ô¤¬³ä¤êÅö¤Æ¤¿°ì»þ¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿Ãͤò
134 ÃΤëÊýË¡¤Ï¸ºß¤·¤Ê¤¤ÅÀ¤ËÃí°Õ (²¼µ­¤Î
135 .BR open_memstream ()
136 ¤â»²¾È)¡£
137
138 .BR open_memstream ()
139 ´Ø¿ô¤Ï¡¢¥Ð¥Ã¥Õ¥¡¤Ø¤Î½ñ¤­¹þ¤ßÍѤ˥¹¥È¥ê¡¼¥à¤ò¥ª¡¼¥×¥ó¤¹¤ë¡£
140 ¥Ð¥Ã¥Õ¥¡¤Ï
141 .RB ( malloc (3)
142 ¤ò»È¤Ã¤Æ) Æ°Åª¤Ë³ä¤êÅö¤Æ¤é¤ì¡¢É¬Íפ˱þ¤¸¤Æ¼«Æ°Åª¤Ë¿­Ä¹¤¹¤ë¡£
143 ¥¹¥È¥ê¡¼¥à¤ò¥¯¥í¡¼¥º¤·¤¿¸å¤Ç¡¢¸Æ¤Ó½Ð¤·¸µ¤Ï¤³¤Î¥Ð¥Ã¥Õ¥¡¤ò
144 .BR free (3)
145 ¤¹¤Ù¤­¤Ç¤¢¤ë¡£
146
147 ¤³¤Î¥¹¥È¥ê¡¼¥à¤¬
148 ¥¯¥í¡¼¥º
149 .RB ( fclose (3))
150 ¤µ¤ì¤¿¤ê¥Õ¥é¥Ã¥·¥å
151 .RB ( fflush (3))
152 ¤µ¤ì¤¿»þ¤Ë¡¢
153 .I ptr
154 ¤È
155 .I sizeloc
156 ¤ÎÃͤϤ½¤ì¤¾¤ì¥Ð¥Ã¥Õ¥¡¤Ø¤Î¥Ý¥¤¥ó¥¿¤È¤½¤Î¥µ¥¤¥º¤Ë¹¹¿·¤µ¤ì¤ë¡£
157 ¤³¤ì¤é¤ÎÃͤϡ¢¸Æ¤Ó½Ð¤·¸µ¤¬¤½¤Î¥¹¥È¥ê¡¼¥à¤Ë¿·¤¿¤Ê½ñ¤­¹þ¤ß¤ò
158 ¹Ô¤ï¤Ê¤¤¾ì¹ç¤Ë¸Â¤êÍ­¸ú¤Ç¤¢¤ë¡£
159 ¥¹¥È¥ê¡¼¥à¤Ë½ñ¤­¹þ¤ß¤ò¹Ô¤Ã¤¿ºÝ¤Ë¤Ï¡¢¤³¤ì¤é¤ÎÊÑ¿ô¤ò»²¾È¤¹¤ëÁ°¤Ë
160 ¥¹¥È¥ê¡¼¥à¤òºÆÅÙ¥Õ¥é¥Ã¥·¥å¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
161
162 ¥Ð¥Ã¥Õ¥¡ËöÈø¤Î NULL ¥Ð¥¤¥È¤ÏÊÝ»ý¤µ¤ì¤ë¡£
163 ¤³¤Î NULL ¥Ð¥¤¥È¤Ï
164 .I sizeloc
165 ¤Ë³ÊǼ¤µ¤ì¤ë¥µ¥¤¥º¤Ë¤Ï¡Ö´Þ¤Þ¤ì¤Ê¤¤¡×¡£
166
167 ¥¹¥È¥ê¡¼¥à¤Î¥Õ¥¡¥¤¥ë°ÌÃÖ¤Ï
168 .BR fseek (3)
169 ¤ä
170 .BR fseeko (3)
171 ¤ÇÊѹ¹¤Ç¤­¤ë¡£
172 ¤¹¤Ç¤Ë¥Ç¡¼¥¿¤¬½ñ¤­¹þ¤Þ¤ì¤¿Îΰè¤ÎËöÈø¤è¤êÀè¤Ë¥Õ¥¡¥¤¥ë°ÌÃÖ¤òÆ°¤«¤¹¤È¡¢
173 ¤½¤Î´Ö¤ÎÎΰè¤Ï 0 ¤ÇËä¤á¤é¤ì¤ë¡£
174
175 .BR open_wmemstream ()
176 ¤Ï
177 .BR open_memstream ()
178 ¤ÈƱÍͤÀ¤¬¡¢¥Ð¥¤¥È¤Ç¤Ï¤Ê¤¯¥ï¥¤¥Éʸ»ú¤ËÂФ·¤ÆÁàºî¤ò¹Ô¤¦ÅÀ¤¬°Û¤Ê¤ë¡£
179 .SH ÊÖ¤êÃÍ
180 À®¸ù¤·¤Æ½ªÎ»¤·¤¿¾ì¹ç¤Ë¤Ï¡¢
181 .BR fmemopen (),
182 .BR open_memstream (),
183 .BR open_wmemstream ()
184 ¤Ï
185 .I FILE
186 ¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
187 ¼ºÇÔ¤·¤¿¾ì¹ç¤Ï¡¢ NULL ¤òÊÖ¤·¡¢
188 .I errno
189 ¤Ë¥¨¥é¡¼¤ò¼¨¤¹Ãͤò¥»¥Ã¥È¤¹¤ë¡£
190 .SH ¥Ð¡¼¥¸¥ç¥ó
191 .BR fmemopen ()
192 ¤È
193 .BR open_memstream ()
194 ¤Ï glibc 1.0.x ¤Ç¤¹¤Ç¤ËÍøÍѲÄǽ¤Ç¤¢¤Ã¤¿¡£
195 .BR open_wmemstream ()
196 ¤Ï glibc 2.4 °Ê¹ß¤ÇÍøÍѲÄǽ¤Ç¤¢¤ë¡£
197 .SH ½àµò
198 POSIX.1-2008.
199 ¤³¤ì¤é¤Î´Ø¿ô¤Ï POSIX.1-2001 ¤Ç¤Ïµ¬Äê¤ì¤Æ¤¤¤Ê¤¤¤¬¡¢
200 Linux °Ê³°¤Î¥·¥¹¥Æ¥à¤Ç¹­¤¯ÍøÍѲÄǽ¤Ç¤¢¤ë¡£
201 .SH Ãí°Õ
202 ¤³¤ì¤é¤Î´Ø¿ô¤¬ÊÖ¤¹¥Õ¥¡¥¤¥ë¥¹¥È¥ê¡¼¥à¤ËÂбþ¤¹¤ë¥Õ¥¡¥¤¥ë
203 ¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï¤Ê¤¤ (¤Ä¤Þ¤ê¡¢ÊÖ¤µ¤ì¤¿¥¹¥È¥ê¡¼¥à¤ËÂФ·¤Æ
204 .BR fileno (3)
205 ¤ò¸Æ¤Ó½Ð¤¹¤È¥¨¥é¡¼¤¬Ê֤뤳¤È¤Ë¤Ê¤ë)¡£
206 .SH ¥Ð¥°
207 ¥Ð¡¼¥¸¥ç¥ó 2.7 ¤è¤êÁ°¤Î glibc ¤Ç¤Ï¡¢
208 .BR open_memstream ()
209 ¤ÇºîÀ®¤µ¤ì¤¿¥¹¥È¥ê¡¼¥à¤ÎËöÈø¤è¤êÀè¤Ë¥Õ¥¡¥¤¥ë°ÌÃÖ¤òÆ°¤«¤·¤Æ¤â¡¢
210 ¥Ð¥Ã¥Õ¥¡¤¬¿­Ä¹¤µ¤ì¤º¡¢
211 .BR fseek ()
212 ¤¬¼ºÇÔ¤· \-1 ¤¬Ê֤롣
213 .\" http://sourceware.org/bugzilla/show_bug.cgi?id=1996
214 .SH Îã
215 ¤³¤Î¥×¥í¥°¥é¥à¤Ï
216 .BR fmemopen ()
217 ¤ò»È¤Ã¤Æ½ÐÎϥХåե¡¤ò¥ª¡¼¥×¥ó¤·¡¢
218 .BR open_memstream ()
219 ¤ò»È¤Ã¤ÆưŪ¤Ë¥µ¥¤¥º¤¬ÊѲ½¤¹¤ë½ÐÎϥХåե¡¤ò¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë¡£
220 (¥×¥í¥°¥é¥à¤ÎÂè°ì¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¤­¿ô¤«¤é¼è¤Ã¤¿) ÆþÎÏʸ»úÎó¤ò
221 ¥¹¥­¥ã¥ó¤·¤ÆÀ°¿ô¤òÆɤ߹þ¤ß¡¢¤³¤ì¤é¤ÎÀ°¿ô¤ÎÆó¾è¤ò½ÐÎϥХåե¡¤Ë½ñ¤­½Ð¤¹¡£
222 ¤³¤Î¥×¥í¥°¥é¥à¤Î¼Â¹ÔÎã¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
223 .in +4n
224 .nf
225
226 .RB "$" " ./a.out \(aq1 23 43\(aq"
227 size=11; ptr=1 529 1849
228 .fi
229 .in
230 .SS ¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹
231 \&
232 .nf
233 #define _GNU_SOURCE
234 #include <string.h>
235 #include <stdio.h>
236 #include <stdlib.h>
237
238 #define handle_error(msg) \\
239     do { perror(msg); exit(EXIT_FAILURE); } while (0)
240
241 int
242 main(int argc, char *argv[])
243 {
244     FILE *out, *in;
245     int v, s;
246     size_t size;
247     char *ptr;
248
249     if (argc != 2) {
250         fprintf(stderr, "Usage: %s <file>\\n", argv[0]);
251         exit(EXIT_FAILURE);
252     }
253
254     in = fmemopen(argv[1], strlen(argv[1]), "r");
255     if (in == NULL)
256         handle_error("fmemopen");
257
258     out = open_memstream(&ptr, &size);
259     if (out == NULL)
260         handle_error("open_memstream");
261
262     for (;;) {
263         s = fscanf(in, "%d", &v);
264         if (s <= 0)
265             break;
266
267         s = fprintf(out, "%d ", v * v);
268         if (s == \-1)
269             handle_error("fprintf");
270     }
271     fclose(in);
272     fclose(out);
273     printf("size=%ld; ptr=%s\\n", (long) size, ptr);
274     free(ptr);
275     exit(EXIT_SUCCESS);
276 }
277 .fi
278 .SH ´ØÏ¢¹àÌÜ
279 .BR fopen (3),
280 .BR fopencookie (3),
281 .BR feature_test_macros (7)