lseek
函数返回值:
成功:文件的当前位移
-1:出错
注意:
通常文件的当前偏移应当是一个非负整数,但是,某些设备也可能允许负的偏移量。但对于普通文件,则其偏移量必须是非负值。因为偏移量可能为负值,所以在比较lseek的返回值时应当谨慎,不要测试它是否小于0,而要测试它是否为-1。
标准I/O开发
是基于流缓冲的,它是符合ANSI C的标准IO处理。
标准I/O提供流缓冲的目的是尽可能减少使用read和write调用的数量。标准I/O提供了3种类型的缓冲存储。
全缓冲
在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。驻在磁盘上的文件通常是由标准I/O库实施全缓冲的。在一个流上执行第一次I/O操作时,通常调用malloc就是使用全缓冲。
行缓冲
在这种情况下,当在输入和输出中遇到新行符时,标准I/O库执行I/O操作,这允许我们一次输出一个字符(如fputc函数),但只有写了一行之后才进行实际I/O操作。当流涉及一个终端时(例如标准输入和标准输出),典型地使用行缓冲。
不带缓冲
标准I/O库不对字符进行缓冲。如果用标准I/O函数写若干字符到不带缓冲的流中,则相当于用write系统调用将这些字符写到打开的文件上。标准出错stderr通常是不带缓存的,这就使得出错信息可以尽快显示出来。