1.最底层的文件调用 size_t write(int fildes, const void *buf, size_t nbytes); 返回实际写入字节数
size_t read(int fildes, void *buf, size_t nbytes); 返回实际读入的字节数
int open(const char *path,int oflags);
int open(const char *path, int oflags,mode_t mode); 如果调用成功返回一个可以被调用的文件描述符fildes。供read 、write 或其他调用
2、gcc -c -o -g
g为了调试用的 加个-g 是为了gdb 用,不然gdb用不到 -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 一般语法:gcc filename.c -o filename 上面的意思是如果你不打 -o filename 那么默认就是输出filemame.out.这个-o就是用来控制输出文件的。 -c 只编译不链接。产生.o文件,就是obj文件,不产生执行文件
3、文件流与底层的文件描述符相关联
4、chmod改变文件或目录的访问权限,chow改变文件的属主,unlink可以用来删除一个文件、link、symlink、mkdir建立目录、rmdir移除目录、chdir切换目录、getcwd把当前目录的名字写道给定的缓冲区。
扫描目录:opendir、readdir、telldir、seekdir、closedir
5、底层文件访问:write\read\open\close\ioctl\lseek\fstat\stat\lstat\dup\dup2
标准IO 库 fopen\fread\fwrite\fclose\fflush\fseek\fgetc\getc\getchar\fputc\putc\putchar\fgets\gets
格式化输入和输出:printf\fprintf\sprintf\sprintf\scanf\fscanf\sscanf
文件和目录的维护
扫描目录:opendir打开一个目录建立一个目录流;readdir返回目录项有关的资料;telldir目录流里面的当前位置;seekdir设置目录流的目录项指针;closedir关闭一个目录流并释放与之关联的资源
6、TIMEFORMAT="" time ./copy_stdio
7、结构体:DIR
dirent:文件夹目录内容
stat:
8、mmap创建一个指向一段内存区域的指针,该内存群与与可以通过一个打开的文件描述符访问的文件的内容相关联
msync把在该内存段的某个部分或整段中的修改写回到被映射的文件中,或者从被映射的文件里读出
munmap释放内存段