setvbuf 함수

2023. 3. 8. 19:36보안 실습/linux

https://www.ibm.com/docs/ko/i/7.3?topic=functions-setvbuf-control-buffering 

 

setvbuf() — 버퍼링 제어

형식 #include int setvbuf(FILE *stream, char *buf, int type, size_t size); 설명 setvbuf() 함수는 지정된 스트림을 위한 버퍼링 전략과 버퍼 크기에 대한 제어를 허용합니다. 통합 파일 시스템 사용 시 setvbuf() 함수

www.ibm.com

 

포너블을 공부할 때 공격파일 코드에서

setvbuf(stdin,0,2,0);
setvbuf(stdout,0,2,0);

이라는 구문을 많이 찾아 볼 수 있다.

 

#include <stdio.h>
int setvbuf(FILE *stream, char *buf, int type, size_t size);

stream

stream은 파일 스트림을 넣는 것으로 stdin, stdout을 넣으면 표준 입출력을 관여한다는 것이다.

bufbuf에서 지정된 배열은 C 라이브러리가 스트림을 위한 버퍼로 사용하기로 선택할 수 있다고 제공한 영역을 지정한단느 의미로 NULL혹은 0을 영역 제공이 없는 것으로 한다.

buf 사이즈 또한 0 이다.

 

type

 

_IOFBF(Full buffering mode)전체 버퍼링은 입력과 출력을 위해 사용됩니다. buf를 버퍼로 사용하고 size를 버퍼 크기로 사용합니다.

_IOLBF(Line buffering mode)행 버퍼링이 사용됩니다. 줄 바꾸기 문자가 쓰여지고 버퍼가 가득 차거나 입력이 요청되면 버퍼가 삭제됩니다.

_IONBF(No buffering mode)사용된 버퍼가 없습니다.

 

의 뜻이며 2번은 _IONBF이다.

 

여기서 size는 0이기 때문에 즉시즉시 입력이 되도록 한다는 뜻이다.