SETBUF 3 2001-06-09

中文man手册

SETBUF

NAME
SYNOPSIS æ»è§
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