IO-day3-文件IO

1.文件描述符(是>=0的整数)---打开文件返回该文件描述符

1)默认有1024(0-1023)个文件描述符

2)使用原则:最小未分配原则

3)程序运行后,系统会默认打开三个文件描述符

stdin->fileno   --  0

stdout->fileno  --  1

stderr->fileno   --  2

IO-day3-文件IO_第1张图片

 2.open函数的使用

IO-day3-文件IO_第2张图片

 

1)功能:打开文件,成功->返回文件描述符,失败->返回-1并置位错误码

2)参数:要打开文件的文件路径及文件名     +       打开方式        +        文件权限(只有第二个参        数中使用了o_CREAT时,需要加第三个参数,否则无需加该参数

IO-day3-文件IO_第3张图片

 3)默认情况->目录文件最大权限:0777

                        普通文件最大权限:0664

IO-day3-文件IO_第4张图片

 3.close的使用

 1)功能:关闭文件,成功返回0,失败返回-1并置位错误码

2)参数:要关闭文件的文件描述符

IO-day3-文件IO_第5张图片

 4.write函数使用

1)向fd写入数据,buf数据起始地址,写入count的个

2)成功返回字节个数,失败返回-1并置位错误码

5.read函数使用

 1)从fd中读取count字节数据,放入buf为起始地址的空间中

 2)成功返回字节个数,失败返回-1并置位错误码

IO-day3-文件IO_第6张图片

 6.lseek函数使用

 1)改变文件光标位置,成功返回光标所在位置到起始位置的偏移量,失败返回-1并置位错误码

2)参数:要改变的文件描述符  +  偏移量  +  起始偏移位置

3)起始偏移位置:

 IO-day3-文件IO_第7张图片

 7.文件拷贝问题

  文件描述符的直接拷贝,只是使用不同变量保存同一个文件描述符而已,在进行读写操作时,操作的是同一个文件描述符,在该过程中,没有新的文件描述符产生,所以多个拷贝出来的文件描述符变星共同使用的是同一个文件光标
IO-day3-文件IO_第8张图片

 8.使用dup函数进行文件描述符的拷贝

 1)拷贝oldfd文件描述符,得到一个新的文件描述符,成功返回新的文件描述符,失败返回-1并置位错误码

 2)参数: 要拷贝的旧的文件描述符 

 3)新旧文件描述符共同指向同一文件,并遵从最小未使用原则,单独进行读写没有问题,且共享同一光标

IO-day3-文件IO_第9张图片

 9.多次使用open函数函数打开同一个文件,每次使用open函数,都会产生一个新的文件描述符,记录同一个文件的文件描述符,没有任何关系,也不共享同—光标
 

IO-day3-文件IO_第10张图片

 10.dup2函数进行文件拷贝

 1)将oldfd文件描述符拷贝生成新的newfd文件描述符,如果在执行之前newfd已经指向某个文件了,那么执行该函资时,会将原本的newfd指向的文件关闭

2)参数:旧的文件描述符  +  新的文件描述符

3)成功返回0,失败返回-1并置位错误码

IO-day3-文件IO_第11张图片

  11.文件状态函数stat

IO-day3-文件IO_第12张图片

 1)功能:根据给定的文件路径,得到该文件的相关信息,将结果放到一个struct stat类型的结构体中,并将结果放入statbuf地址中

2)参数:文件路径  +  struct stat类型的指针,通过该参数,将文件的相关信息返回给主调函数
IO-day3-文件IO_第13张图片

 

IO-day3-文件IO_第14张图片

 

你可能感兴趣的:(数学建模,c语言)