当前位置: 首页 > news >正文

Linux3-文件io、时间有关函数

一、前情回顾

1.当scanf输入10\n直接结束程序,因为scanf接收了10,fgets(接收了\n结束程序),

因此可以加一个getchar();消耗一个\n。

2.fgets();所接收的\n利用buff[strlen(buff)-1]=0;

二、文件io

1.目的:不希望指令进入缓冲区,希望直接被系统调用可以使用文件io

2.块设备文件、字符设备文件、目录文件、普通文件、套接字文件、管道文件均可使用文件io

3.特点:系统调用,Linux内核提供的文件操作接口

                打开文件  open

                读写文件  read /write

                关闭文件  close

                文件打开系统会自动分配一个文件描述符

int open(const char *path,int flags)

//man 2系统调用   man 3标准c库

头文件:

        #include<sys/types.h>

        #include<sys/stat.h>

        #include<fcntl.h>

功能:

        打开一个文件

参数:

        path打开的文件名

        flags打开方式

                        O_RDONLY   只读            

                        O_WRONLY  只写             

                        O_RDWR      读写             

                        O_CREAT   文件不存在时创建  一定加0664

                        O_TRUNC   清空文件         

                        O_APPEND 追加写

rO_RDONLY
r+O_RDWR  
wO_WRONLY     |   O_CREAT    |    O_TRUNC 
w+ O_RDWR        |   O_CREAT    |    O_TRUNC 
aO_WRONLY     |   O_CREAT    |    O_APPEND
a+O_RDWR         |   O_CREAT    |    O_APPEND

返回值:

        成功:文件描述符(操作系统为已打开文件分配的标识符;一个小的非负的整形数据,代表一个已打开的文件)

                        默认的文件描述符 0-1023

                        分配原则:最小未被使用原则 

                        系统默认已打开的三个文件对应的文件描述符:

                                                              标准io (FILE *)            文件io

                                        标准输入设备    stdin                             0

                                        标准输出设备    stdout                           1

                                        标准出错设备    stderr                            2

                       文件描述符泄漏:打开的文件使用完时,未及时

  •                                 使用完及时关闭
    •                           修改文件描述符上限

        失败:-1

 读写权限

-rwxrwxrwx

0  1   2   3

0:文件类型

1.当前用户对该文件的读写执行权限

2.当前用户所在组的同组用户对该文件的读写执行权限(可多人)

3.其他用户对该文件的读写执行权限

int open(const char *path,int flags,mode_t mode)

注:mode

1.为打开读写执行权限,一般传0664

int close(int fd)

头文件:

        #include<unistd.h>

不关造成文件描述符的泄漏,文件描述符个数有限

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

功能:读文件

参数:

        fd:从文件描述符开始

       任意类型的 buf:读到buf中

        count:读取几个字节

返回值:

        成功:返回读到的字节数

        失败:-1

ssize_t write(int fd, void *buf, size_t count);
off_t lseek(int fd,off_t sffset,int whence)

功能:重新定位文件的读写位置

参数

        fd:定位的文件

        offset:定位的偏移量

        whence:要偏移的位置

返回值:

        成功:文件开头到当前位置的偏移量

        失败:-1

与时间相关的函数:

time();

功能:获取1970-1-1 00:00:00到现在的秒数

ctime();

功能:将秒数转换为字符串时间

localtime();

功能:将秒数转换为日历时间

int fprintf(FILE *stream, const char *format, ...);

将格式化后的字符串写入到文件流指针所对用的文件里

int dprintf(int fd, const char *format, ...);

将格式化后的字符串写入到文件描述符(012)所对用的文件里

int sprintf(char *str, const char *format, ...);

将格式化后的字符串写入到str所指向的内存空间

*逻辑与 && 全真为真          按位与    &      全真为真   

 逻辑或 ||    全假为假           按位或    |        有一个一即为一

相关文章:

  • 使用API有效率地管理Dynadot域名,参与过期域名竞价
  • 高子昂医编---23岁,医疗编上岸,正式开启养老生活
  • 【Go | 从0实现简单分布式缓存】-2:HTTP服务端与一致性哈希
  • 【Spring+MyBatis】_图书管理系统(中篇)
  • 禁止WPS强制打开PDF文件
  • linux环境-nginx通过nginx_upstream_check_module模块,配置服务自动检测-日志自动分割
  • 【Spring详解二】容器的基本实现
  • 制造运营管理(MOM)与仓库管理系统(WMS)何以相辅相成对企业的生产管理进行提升
  • ​实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”​等荣誉
  • uniapp 连接mqtt
  • JAXB复杂对象反序列化
  • 计算机视觉:神经网络实战之手势识别(附代码)
  • 前端插件使用xlsx-populate,花样配置excel内容,根据坐添加标替换excel内容,修改颜色,合并单元格...。
  • 个人shell脚本分享
  • spring如何解决循环依赖的问题
  • 讯方·智汇云校华为官方授权培训机构
  • 突破反爬困境:从服务端渲染到客户端SPA,爬虫环境的演变与新挑战(一)
  • Linux(Centos 7.6)命令详解:cat
  • LeetCode47
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑩】
  • 山东滕州一车辆撞向公交站台致多人倒地,肇事者被控制,案件已移交刑警
  • 李翔宁:城市的每个人都参与了上海的建造,这一过程还在持续
  • 泰国培训十万网络安全人员加强网络防御打击电诈
  • 抚州一原副县长拉拢公职人员组建“吃喝圈”,长期接受打牌掼蛋等“保姆式”服务
  • 释新闻|新加坡大选今日投票:除了黄循财首次挂帅,还有哪些看点
  • 胖东来回应“浙江‘胖都来’卖场开业”:已取证并邮寄律师函