主页 > 创业  > 

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

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_RDONLYr+O_RDWR  wO_WRONLY     |   O_CREAT    |    O_TRUNC w+ O_RDWR        |   O_CREAT    |    O_TRUNC aO_WRONLY     |   O_CREAT    |    O_APPENDa+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所指向的内存空间

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

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

标签:

Linux3-文件io、时间有关函数由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Linux3-文件io、时间有关函数