SETBUF 3 2001-06-09
目录
- NAME setbuf, setbuffer, setlinebuf, setvbuf
- SYNOPSIS 总览
- DESCRIPTION 描述
- RETURN VALUE 返回值
- CONFORMING TO 标准参考
- BUGS
函数
.B setbuffer
和
.B setlinebuf
无法移植到 4.2BSD 之前的 BSD 版本,在 Linux 中仅在 libc 4.5.21 之后的系统中可用。在 4.2BSD 和 4.3BSD 系统中,
.B setbuf
总是使用非最优的缓冲大小,应当避免使用它。
.P
在
.I stream
被关闭时,必须确保
.I buf
和它指向的空间仍然存在。这通常发生在程序终止时。
.P
例如,下列调用是非法的:
.nf
.sp
#include
int main() { char buf[BUFSIZ]; setbuf(stdin, buf); printf( - SEE ALSO 参见
- 跋
SETBUF
NAMESYNOPSIS æ»è§
DESCRIPTION æè¿°
RETURN VALUE è¿åå¼
CONFORMING TO æ ååè
BUGS
SEE ALSO åè§
è·
NAME
setbuf, setbuffer, setlinebuf, setvbuf - æµç¼å²æä½
SYNOPSIS æ»è§
#include <stdio.h>
void
setbuf(FILE *stream, char *buf);
void setbuffer(FILE *stream, char
*buf, size_t size);
void setlinebuf(FILE *stream);
int setvbuf(FILE *stream, char
*buf, int mode , size_t
size);
DESCRIPTION æè¿°
æä¸ç§ç±»åçç¼å²ç- ç¥ï¼å®ä»¬æ¯æç¼å²ï¼åç¼å²åè¡ç¼å²ãå½è¾åºæµæç¼å²æ¶ï¼ä¿¡æ¯å¨åçåæ¶åºç°äºç®ææä»¶æç»ç«¯ä¸ï¼å½æ¯åç¼å²æ¶ï¼å- 符被æåï¼ç¶åä¸èµ·åå¥ï¼å½æ¯è¡ç¼å²æ¶ï¼å符被æå- ï¼ç´å°è¦è¾åºä¸ä¸ªæ°è¡ç¬¦ï¼æèä»ä»»ä½ä¸ç»ç«¯è®¾å¤è¿æ¥çæµä¸ (å¸åçæ¯ stdin) 读åè¾å¥æ¶æè¾åºã彿° fflush(3) å¯ä»¥ç¨æ¥å¼ºå¶æåè¾åºã(åè§ fclose(3)) éå¸¸æææä»¶é½æ¯åç¼å²çã彿件 I/O æä½å¨æä»¶ä¸åçæ¶ï¼å°è°ç¨ malloc(3) ï¼è·å¾ä¸ä¸ªç¼å²ãå¦ææµæåä¸ä¸ªç»ç«¯ (é常 stdout 齿¯è¿æ ·)ï¼é£ä¹å®æ¯è¡ç¼å²çãæ åéè¯¯æµ stderr é»è®¤æ»æ¯æ ç¼å²çã
彿° setvbuf å¯ä»¥ç¨å¨ä»»ä½æå¼çæµä¸ï¼æ¹åå®çç¼å²ãåæ° mode å¿é¡»æ¯ä¸åä¸ä¸ªå®ä¹ä¸ï¼
|
_IONBF |
æ ç¼å² |
|||
|
_IOLBF |
è¡ç¼å² |
|||
|
_IOFBF |
å®å¨ç¼å² |
é¤éæ¯æ ç¼å²çæä»¶ï¼å¦ååæ° buf åºå½æåä¸ä¸ªé¿åº¦è³å°ä¸º size å- èçç¼å²ï¼è¿ä¸ªç¼å²å°å代å½åçç¼å²ã妿忰 buf æ¯ NULL ï¼åªæè¿ä¸ªæ¨¡å¼ä¼åå°å½±åï¼ä¸æ¬¡ read æ write æä½è¿å°åéä¸ä¸ªæ°çç¼å²ã彿° setvbuf åªè½å¨æå¼ä¸ä¸ªæµï¼è¿æªå¯¹å®è¿è¡ä»»ä½å¶ä»æä½ä¹å使ç¨ã
å¶ä»ä¸ä¸ªå½æ°è°ç¨æ¯å½æ° setvbuf çå«åï¼å½æ° setbuf ä¸ä½¿ç¨ä¸åè¯å¥å®å¨ç- ä»·ï¼
setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
彿° setbuffer 䏿¤ç¸åï¼ä½æ¯ç¼å²çé¿åº¦ç±ç¨æ·å³å®ï¼è䏿¯ç±é»è®¤å¼ BUFSIZ å³å®ã彿° setlinebuf ä¸ä½¿ç¨ä¸åè¯å¥å®å¨çä»·ï¼
setvbuf(stream, (char *)NULL, _IOLBF, 0);
RETURN VALUE è¿åå¼
彿° setvbuf æåæ§è¡æ¶è¿å 0ãå®å¤±è´¥æ¶å¯è½è¿åä»»ä½å¼ï¼ä½æ¯å½ It can return any value on failure, but returns nonzero when mode 䏿- £ç¡®ï¼æèä¸è½å®ç°è¯·æ±æ¶ï¼å¿é¡»è¿åéé¶å¼ãå®å¨å¤±è´¥æ¶å¯è½è®¾ç½® errno ãå¶ä»å½æ°æ²¡æè¿åå¼ã
CONFORMING TO æ ååè
彿° setbuf å setvbuf éµå¾ª ANSI X3.159-1989 (‘‘ANSI C’’) æ åã
BUGS
彿° setbuffer å setlinebuf æ æ³ç§»æ¤å° 4.2BSD ä¹åç BSD çæ¬ï¼å¨ Linux ä¸ä»å¨ libc 4.5.21 ä¹åçç³»ç»ä¸å¯ç¨ãå¨ 4.2BSD å 4.3BSD ç³»ç»ä¸ï¼ setbuf æ»æ¯ä½¿ç¨éæä¼çç¼å²å¤§å°ï¼åºå½é¿å使ç¨å®ã
å¨ stream 被å³éæ¶ï¼å¿é¡»ç¡®ä¿ buf å宿åç空é´ä»ç¶å- å¨ãè¿é常åçå¨ç¨åºç»æ¢æ¶ã
ä¾å¦ï¼ä¸åè°ç¨æ¯éæ³çï¼
#include
<stdio.h>
int main()
{
char buf[BUFSIZ];
setbuf(stdin, buf);
printf("Hello, world!\n");
return 0;
}
SEE ALSO åè§
fclose(3), fflush(3), fopen(3), fread(3), malloc(3), printf(3), puts(3)
è·
æ¬é¡µé¢ä¸æçç±ä¸æ
man
æå页计åæä¾ã
䏿 man
æå页计åï¼https://github.com/man-pages-zh/manpages-zh