Linux C IO 프로 그래 밍 학습 노트 (첫날: 표준 IO)

2278 단어 Linux 학습 과정
먼저 입 출력 의 개념 을 말 해 보 자. 입 출력 이란 프로그램 에 비해 데이터 가 프로그램 에 전송 되 는 과정 은 입력 이 고 반대로 출력 이다.
그 다음 에 Liux 에서 IO 는 두 가지 로 나 뉘 는데 하 나 는 파일 io 이다. 하 나 는 커 널 에서 제공 하 는 것 이 고 비교적 간결 하 며 저급 IO 이 며 캐 시 가 없다. 다른 하 나 는 표준 IO 이다. 다른 하 나 는 표준 C 라 이브 러 리 에서 제공 하 는 것 이 고 기능 이 복잡 하고 고급 IO 이다. 캐 시 가 있 으 면 캐 시 는 다음 과 같은 몇 가지 로 나 눌 수 있다.
1. 줄 버퍼: 시스템 이 많 지 않 습 니 다. 사용자 와 대화 하 는 데 많이 사 용 됩 니 다. 한 줄 이 꽉 찼 을 때 버퍼 를 새로 고치 고 한 줄 이 끝 납 니 다.
2. 버퍼 가득: 꽉 찼 을 때 버퍼 새로 고침
3. 버퍼 없 음
Liux 에서 파일 에 대한 처 리 는 모두 파일 흐름 형식 입 니 다.
1. 파일 흐름 은 흐름, 크기, 형식 에 만 관심
2. 시스템 흐름: stdin, stdout, stderr
표준 IO 함수 1. linux 시스템 의 IO 함 수 는 두 가지 가 있 습 니 다. 파일 IO 와 표준 IO 입 니 다. 그 중에서 파일 IO 는 kernel 에서 제공 하고 표준 IO 는 C 라 이브 러 리 에서 제공 합 니 다. 그 중에서 파일 IO 는 버퍼 가 없 으 며 표준 버퍼 는 버퍼 가 있 습 니 다. 코드 를 보십시오.
그러면여기 hello > / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * > 파일 이름: test. c > 저자: Baniel Gao > Mail:[email protected] > Blog: blog.csdn.net/createchance > Created Time: Wed 25 Dec 2013 06:56:18 PM CST ************************************************************************/ #include int main(void) { printf("hello world"); fflush(stdout); while(1) ; return 0; }
이렇게 하면 hello World 가 표시 할 수 있 습 니 다. 사실 버퍼 의 특성 도 수정 할 수 있 습 니 다. 앞에서 말 했 듯 이 버퍼 는 3 중 으로 나 뉘 어 있 습 니 다. 사용자 와 교류 하 는 셸 에서 그의 버퍼 는 줄 버퍼 입 니 다. 한 줄 의 끝 을 기 다 려 야 출력 할 수 있 기 때문에 추가 적 인 방법 으로 문자열 을 표시 할 수 있 습 니 다. 사실 우 리 는 setbuf 함 수 를 사용 하여 버퍼 를 없 는 것 으로 수정 할 수 있 습 니 다.버퍼:
/*************************************************************************
	> File Name: test.c
	> Author: Baniel Gao
	> Mail: [email protected] 
	> Blog: blog.csdn.net/createchance 
	> Created Time: Wed 25 Dec 2013 06:56:18 PM CST
 ************************************************************************/
#include 

int main(void)
{
	printf("hello world");
	while(1)
		;

	return 0;
}

여기 setbuf 함수 의 원형 은:
void setbuf(FILE *stream, char *buf);
즉, 버퍼 가 buf 가 가리 키 는 영역 으로 바 뀌 었 습 니 다. 이 영역 을 NULL 로 가리 키 면 버퍼 가 없습니다!! 사실 setvbuf 함수 도 사용 할 수 있 습 니 다. 버퍼 를 줄 버퍼, 블록 버퍼, 버퍼 없 음 으로 설정 할 수 있 습 니 다. 구체 적 인 사용 방법 은 MAN 을 사용 하 십시오.

좋은 웹페이지 즐겨찾기