ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

快速掌握Linux(2)(时间相关函数)(文件IO)

快速掌握Linux(2)(时间相关函数)(文件IO) 5.时间相关函数1)time()#include time.htime_t time(time_t *tloc);功能获取1970-1-1 000000到现在的秒数参数tloc保存秒数的变量的地址返回值获得的秒数2)ctime()char *ctime(const time_t *timep);功能将秒数转换成字符串时间参数timep秒数的变量的地址返回值字符串时间3)localtiome()struct tm *localtime(const time_t *timep);功能将秒数转换成日历时间struct tm {int tm_sec; /* Seconds (0-60) */int tm_min; /* Minutes (0-59) */int tm_hour; /* Hours (0-23) */int tm_mday; /* Day of the month (1-31) */int tm_mon; /* Month (0-11) */int tm_year; /* Year - 1900 */int tm_wday; /* Day of the week (0-6, Sunday 0) */int tm_yday; /* Day in the year (0-365, 1 Jan 0) */int tm_isdst; /* Daylight saving time */};6. 文件IO文件IO Linux内核提供的文件操作接口。属于系统调用。学习接口1.打开文件 open()2.读文件、写文件 : read() 、write()3.关闭文件 : close()函数接口1)open#include sys/types.h#include sys/stat.h#include fcntl.hint open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);功能打开一个文件并获得一个文件描述符参数pathname要打开的文件的文件名flags打开方式O_RDONLY只读O_WRONLY只写O_RDWR读写O_CREAT创建O_TRUNC清空O_APPEND追加r O_RDONLYr O_RDWRw O_WRONLY | O_TRUNC | O_CREAT 0664w O_RDWR | O_TRUNC | O_CREAT0664a O_WRONLY | O_CREAT | O_APPEND 0664a O_RDWR | O_CREAT | O_APPEND 0664mode用户自己、同组用户、其他用户对该文件的读写执行权限(mode ~umask)普通文件0664权限给满0777rwxrwxr-x返回值成功文件描述符失败-1文件描述符当打开一个文件时系统会为已打开的文件分配一个文件描述符用来标记该文件。文件描述符小的非负的整形数据操作系统默认可分配出的文件描述符0-1023 总共1024个文件描述符的分配原则最小未被使用系统默认已打开的文件标准IO: 文件IOFILE * intstdin 0STDIN_FILENOstdout 1STDOUT_FILENOstderr 2 (STDERR_FILENO)2)close#include unistd.hint close(int fd);功能关闭文件参数fd文件描述符返回值成功0失败-1注意只打开文件使用完不关闭文件会造成文件描述符泄露。3)writessize_t write(int fd, const void *buf, size_t count);功能向文件中写入数据参数fd要写入的文件描述符buf要写入的数据首地址count希望写入的字节数返回值成功实际写入的字节数失败-14)readssize_t read(int fd, void *buf, size_t count);功能从文件中读取数据参数fd要读的文件的文件描述符buf存储读取数据的空间首地址count希望读到的字节数返回值成功返回实际读到的字节数失败-1到达文件文件末尾0文件拷贝int file_copy(const char *srcfile, const char *dstfile){int fdsrc open(srcfile, O_RDONLY);int fddst open(dstfile, O_WRONLY | O_CREAT | O_TRUNC, 0664);if (-1 fdsrc || -1 fddst){printf(open error\n);return -1;}char buff[1024] {0};ssize_t size 0;while ((size read(fdsrc, buff, sizeof(buff))) 0){write(fddst, buff, size);}close(fdsrc);close(fddst);return 0;}5)文件定位函数(1)lseekoff_t lseek(int fd, off_t offset, int whence);功能重新定位文件的读写位置参数fd文件描述符offset偏移量whence要偏移的起始位置SEEK_SET :从文件开头偏移SEEK_CUR:从当前读写位置偏移SEEK_END从文件末尾偏移返回值成功返回当前读写位置到文件开头的偏移量失败-17.文件IO和标准IO的区别缓冲区(1)行缓冲默认大小1024字节1K主要使用在人机交互终端上。刷新条件遇到\n刷新程序结束刷新使用fflush强制刷新缓冲区满时自动刷新(2)全缓冲默认大小4096字节4K文件交互刷新条件程序结束刷新文件关闭自动刷新全缓冲区满时自动刷新使用fflush强制刷新(3)无缓冲0k 出错信息输出标准出错设备stderr
返回列表