part0:背景了解
IO
标准IO
文件IO(文件IO是操作系统运行进程和硬件交互的一种方式,使用更广泛的IO接口)
文件属性获取
目录操作(打开目录、读取目录内容、关闭目录等)
库:
静态库(由编译器链接的代码库,不随运行时动态加载)
动态库(共享库,在运行时加载到内存中,可以被多个程序共享)
进程
进程:(运行时程序的封装,资源调度和分配的基本单位,实现了操作系统的并发。
线程:(进程中的子任务,是CPU调度和分派的基本单位
进程间的通信:(不同进程之间进行数据交换和协作的机制
part1:标准IO
文件类型: b c d - l s p
概念:c库中定义的输入输出函数
特点:
1.有缓冲区,通过缓冲减少系统调用提高效率
2.围绕流进行操作 *FILE (FILE是结构体,描述操作文件信息)
3.默认打开三个流:stdin(标准输入)、stdout(标准输出)、stderr(标准错误)
part2:缓冲区
1.行缓存:与终端操作有关刷新条件:1.程序正常退出 2.\n刷新 3.缓存区满刷新
缓存区满刷新
int main(int argc,char const *argv[])
{
//printf("helloshiny");加‘\n’会让缓存区刷新
for(int i=0;i<257;i++)
printf("%4d",i);
while(1)
return 0;
}
计算缓存区大小
int main(int argc,char const* argv[])
{
printf("helloshiny");
printf("%d\n",stdout->_IO_buf_end- stand->_IO_buf_base);
return 0;
}
强制刷新fflush
int main(int argc,char const* argv[])
{
printf("helloshiny");
fflush(NULL);
while(1)
return 0;
}
2.缓存区:
1.正常退出2.\n刷新3.缓存区满刷新4.计算缓存区5.强制刷新
计算缓存区大小:
int main(int argc,char const*argv[])
{
printf("hello shiny");
printf("%d\n",stdout->_IO_buf_end- stdout->_IO_buf_base);
return 0;
}
3.全缓存:文件操作
刷新条件:1.正常退出2.缓存区满刷新3.强制刷新fflush
4.不缓存:比如输入错误直接报错不缓存