I/O: input&output, 是一切实现的基础.无的话无法保留(转存到文件中)
两种实现:
标准IO stdo
系统调用IO (文件IO)sysio
优先使用标准io.
移植性好,并且合并系统调用(为读写加速,buffer和cache)
系统调用io由内核提供,不同内核系统io不同,各个平台不同。标准出来和稀泥,对话kernal.
printf函数,stdio中的;标准io在系统io基础上,由系统io实现;linux windows都可以用printf;
不同的std依赖的sysio不同,标准io中的fopen:linux依赖open;win依赖openfile
stdio:FILE类型(结构体)贯穿始终
一系列函数: 打开与关闭: fopen():
stream open functions
返回值为FILE起始位置 '''FILE *fopen(const char* path, const char*mode)'''
- 加const ,不改变;char *ptr=“abc”;ptr[0]=‘x’;不同编译环境不一样.传的是常量
- 返回值,errno 全局变量,缺陷:大家一起用,若用了没有及时打印,会被其他人使用覆盖;usr/include/asm-generic.errno现已私有化,为宏
- 出错,perror,strerror两种函数
- 返回的指针放在堆里,localtime返回结构体指针放在静态区static区函数被 重复调用时只会声明一次,同一块空间
- 头文件的包含,malloc函数,int *p=malloc(sizeof(int))
- 小技巧:有互逆操作的函数fopen,fclose,返回的指针放在堆上。 fclose();
- 是资源就有上限,一个进程空间里打开的文件数:1024
- stdin sdout stderr 1021 命令:ulimit -a
- 权限设置:0666&~umask (0002)umask值越大,消的权限越多一个文件;664
- -rw-rw-r—
静态区中的 读写字符/字符串/二进制 fgetc(); fputc(); fgets(); fputs(); fread(); fwrite();
printf(); scanf();
文件指针: fseeko(); ftello(); rewind();
fflush();
getline();
man手册:第一章 基本命令;第七章:man 7 socket/cp/epoll 机制;第三章 标准库函数;使用man手册学习;
- 很多面试题与缓冲有关系 行缓冲 全缓冲