使用标准IO库时,进程(或者是shell)自动打开并关联到程序运行窗口的标准输入输出流对象,为标准输入,标准输出,标准出错,这些流对象引用的文件,与不带缓冲的IO函数使用的文件描述符,它们关联的文件对是相同的,这些文件应该指的就是那些窗口,窗口在显示器上(显示器是文件),如果使用了重定向,那么所谓的文件,就是硬盘上的指定文件。也就是说,流对象(标准IO使用)与文件描述符(不带缓冲的IO使用),它们关联到相同的文件。
程序清单5-2用fgets和fputs将标准输入复制到标准输出
#include "apue.h" int main(void) { char buf[MAXLINE]; while (fgets(buf, MAXLINE, stdin) != NULL) { if (fputs(buf, stdout) == EOF) { err_sys("output error"); } } if (ferror(stdin)) { err_sys("input error"); } exit(0); }
all: mycat getcputc fgetsfputs mycat: mycat.c g++ -g -Wall mycat.c ../lib/libapue.a -I ../include -o mycat getcputc: getcputc.c g++ -g -Wall getcputc.c ../lib/libapue.a -I ../include -o getcputc fgetsfputs: fgetsfputs.c g++ -g -Wall fgetsfputs.c ../lib/libapue.a -I ../include -o fgetsfputs clean: rm mycat getcputc fgetsfputs
时间: 2024-10-06 19:54:04