APUE 입 출력: 버퍼 없 는 I/O
네티즌 들 이 정리 한 데이터 흐름 경 로 는 다음 과 같 습 니 다. 캐 시 없 는 IO 작업 데이터 흐름 경로: 데이터 - 커 널 캐 시 구역 - 디스크 표준 IO 작업 데이터 흐름 경로: 데이터 - 스 트림 캐 시 구역 - 커 널 캐 시 구역 - 디스크
책 속 에는 이런 실례 가 있다
#include "apue.h"
#define BUFFSIZE 4096 //缓冲区的长度
int
main(void)
{
int n;
char buf[BUFFSIZE]; //用户自己弄的缓冲区
while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0) // STDIN_FILENO 就是标准输入的文件描述符 值为0 //这条语句就是从标准输入里读
if (write(STDOUT_FILENO, buf, n) != n) // STDOUT_FILENO 就是标准输出的文件描述符 值为1//这条语句就是写入标准输出
err_sys("write error"); //err_sys 是大师自己写的一个出错处理
if (n < 0)
err_sys("read error");
exit(0);
}
이 예 는 버퍼 가 없 는 I/O 를 사용 하여 표준 입력 에서 읽 고 표준 출력 에 쓰 는 것 입 니 다.
#include "apue.h"
int
main(void)
{
int c;
while ((c = getc(stdin)) != EOF) // stdin表示标准输入
if (putc(c, stdout) == EOF) //stdout表示标准输出 与stdin一同在头文件<stdio.h>中定义的
err_sys("output error");
if (ferror(stdin))
err_sys("input error");
exit(0);
}
이 예 는 표준 I/O 를 사용 하여 표준 입력 에서 데 이 터 를 읽 고 표준 출력 에 쓰 는 것 입 니 다.이 안에 EOF, EOF 가 있 습 니 다. < stdio. h > 헤더 파일 에서 값 을 - 1 로 정의 합 니 다.getc 는 표준 I/O 함수 이 며, 함수 getc () 는 흐름 에서 문 자 를 가 져 오 는 데 사용 되 며, 원형 은 int getc (FILE * stream) 입 니 다. 인자 * steam 은 문 자 를 읽 을 파일 흐름 입 니 다.읽 은 문 자 를 되 돌려 줍 니 다.파일 끝 에 데이터 가 없 을 때 - 1 (EOF) 을 되 돌려 줍 니 다.
EOF 의 값 은 - 1 이기 때문에 다음 과 같은 표기 법 도 있 습 니 다.
while(~getc()){
}
- 1 의 반 코드 는 0 이기 때문에 이 함 수 는 파일 이 끝 날 때 까지 이 순환 을 멈 출 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.