• Linux文件操作函数


    creat() 函数

      

    close() 函数

      

    read() 函数

      

    • read 函数实际读到的字节数少于要求读的字节数时:
    1. 读普通文件,在读到要求字节数之前就到达文件尾
    2. 当从终端设备读,通常一次最多读一行;
    3. 当从网络读时,网络中的缓冲机构可能造成返回值小于所要求读的字节数;
    4. 某些面向记录的设备,如磁带,一次最多返回一个记录;
    • 读操作完成后,文件的当前位置将从读之前的位置加上实际读的字节数;
    • 当有错误发生时则返回 -1,错误代码存入 errno 中,而文件读写位置则无法预期;

    write() 函数

      

    • 数据无法一次性读完时

        第二次读 buf 中数据时,读位置指针并不会自动移动
        按如下格式实现读位置移动: write(fp, p1+len, (strlen(p1) len)len),直至指针恢复

    • Write 一次可以写的最大数据范围是 8192

        写入数据大小最好小于 buff 中的值
        Count 参数值大于 SSIZE_MAX ,则 write 调用的结果未定义
        Count 参数值为 0 时, write 调用会立即返回 0 这个值

    • Write 调用返回时,内核已经将缓冲区所提供的数据复制到内核的缓冲区,

        但是无法保证数据已经写出到预定的目的地

    // Read 和 write 函数示例
    #include <stdio.h >
    #include <stdlib.h
    #include <unistd.h
    int main(void)
    {
    	char buf [100];
    	int num = 0;
    	if ((num = read(STDIN_FILENO, buf , 10)) == -1)
    	{
    	    printf("read error"); error(-1);
    	} else {
    	    // 将键盘输入又输出到屏幕上
    	    write(STDOUT_FILENO,buf , num );
    	}
    return 0;
    }
  • 相关阅读:
    线程基础1
    组合数学的卡特兰数 TOJ 3551: Game of Connections
    2017ACM/ICPC广西邀请赛-重现赛(感谢广西大学)
    Codeforces Round #430 (Div. 2)
    线代之高斯消元
    牛客网Wannafly模拟赛
    TOJ3039: 材质贴图
    AtCoder Grand Contest 019
    TOJ 3974: Region n条直线m个圆最多将圆分为几个区域
    AIM Tech Round 4 (Div. 2)
  • 原文地址:https://www.cnblogs.com/51try-again/p/11035105.html
Copyright © 2020-2023  润新知