Linux标准IO定位函数,Linux C标准IO库函数详解 一

您所在的位置:网站首页 gta5线上促销 Linux标准IO定位函数,Linux C标准IO库函数详解 一

Linux标准IO定位函数,Linux C标准IO库函数详解 一

2024-07-09 13:05:05| 来源: 网络整理| 查看: 265

1、open/close函数

open函数可以打开或者创建一个文件。

#include

#include

#include

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

返回值:成功返回新分配的文件描述符,出错返回-1并设置errno

close函数关闭一个已打开的文件:

#include

int close(int fd);

返回值:成功返回0,出错返回-1并设置errno

使用这个函数注意一下几点:

(1)pathname可以是相对路径,也可以是绝对路径

(2)flags有一系列参数可以选择:

O_RDONLY 只读打开

O_WRONLY 只写打开

O_RDWR 可读可写打开

O_APPEND 表示追加。如果文件已有内容,这次打开文件所写的数据附加到文件的末尾而不覆盖原来的内容。

O_CREAT 若此文件不存在则创建它。使用此选项时需要提供第三个参数mode,表示该文件的访问权限.

O_EXCL 如果同时指定了O_CREAT,并且文件已存在,则出错返回

O_TRUNC 如果文件已存在,并且以只写或可读可写方式打开,则将其长度截断(Truncate) 为0字节

2、read/write函数

read函数从打开的设备或文件中读取数据:

#include

ssize_t read(int fd, void *buf, size_t count);

返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文

件末尾,则这次read返回0

write函数向打开的设备或文件中写数据:

#include

ssize_t write(int fd, const void *buf, size_t count);

返回值:成功返回写入的字节数,出错返回-1并设置errno

3、recv/send函数

recv函数和read函数功能差不多:使用的时候一般把flags赋值为0

#include

#include

ssize_t recv(int sockfd, void *buf, size_t len, int flags);

send函数和write函数功能差不多:

#include

#include

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

4、lseek/fseek函数

设置读写文件的位置,每个打开的文件都记录着当前读写位置,打开文件时读写位置是0,表示文件开头,通常读写多少个字节就会将读写位置往后移多少个字节。但是有一个例外,如果以O_APPEND方式打开,每次写操作都会在文件末尾追加数据,然后将读写位置移到新的文件末尾。 lseek和标准I/O库的fseek函数类似,可以移动当前读写位置(或者叫偏移量).

#include

#include

off_t lseek(int fd, off_t offset, int whence);

#include

int fseek(FILE *stream, long offset, int whence);

使用注意事项:

whence表示处于文件的位置,有如下三个选项:

SEEK_SET 将读写位置指向文件头后再增加offset个位移量。

SEEK_CUR 以目前的读写位置往后增加offset个位移量。

SEEK_END 将读写位置指向文件尾后再增加offset个位移量。

IO库函数的使用:

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main()

{

char* filename = "./hello.txt";

int nFd = 0, nRet = 0;

int nReadLen = 0;

char szBuff[BUFSIZ] = {0};

/* 以读写的方式打开文件 */

nFd = open(filename,O_RDWR);

if(nFd < 0)

{

perror("open:");

return 1;

}

/* 读取文件的内容 */

nReadLen = read(nFd,szBuff,BUFSIZ);

if(nReadLen > 0)

{

printf("read file data: %s\n",szBuff);

}

else

{

perror("read:");

}

/* 往文件里面写入内容 */

char szWrData[] = {"You are small"};

write(nFd,szWrData,strlen(szWrData));

/* 再次读取文件的内容 */

memset(szBuff,0,BUFSIZ);

/* 由于当前的文件位置指针已经指向了文件的末尾,现在再次读取的时候需要把文件的位置指针设置到文件的开头 */

lseek(nFd,0,SEEK_SET);

nReadLen = read(nFd,szBuff,BUFSIZ);

if(nReadLen > 0)

{

printf("read file data: %s\n",szBuff);

}

else

{

perror("read:");

}

/* 关闭文件 */

close(nFd);

return 0;

}



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭