一、lseek——移动光标操作
1.原函数
表头文件
#include "sys/types.h"
#include "unistd.h"
定义函数
off_t lseek(int fildes, off_t offset, int whence);
函数说明:open打开文件后光标所在的位置是这个文件的读写位置
fildes——文件描述词
offset——根据参数whence来移动光标位置(单位字节)
whence——配置此时光标所在位置
返回值——成功返回目前的读写位置,也就是距离文件开头多少个字节。错误返回-1,errno会存放错误代码。
2.参数取值
whence参数
SEEK_SET 参数offset即为新的读写位置。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。
下列是教特别的使用方式:
1) 欲将读写位置移到文件开头时:lseek(int fildes,0,SEEK_SET);
2) 欲将读写位置移到文件尾时:lseek(int fildes,0,SEEK_END);
3) 想要取得目前文件位置时:lseek(int fildes,0,SEEK_CUR);
3.示例
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd = open("filef", O_RDWR | O_CREAT,0600);//打开文件
int len=lseek(fd,0,SEEK_SET);//光标位置移到文件开头
printf("len=%d\n",len);//输出距离文件开头字节数
len=lseek(fd,0,SEEK_END);//光标位置移到文件末尾
printf("len=%d\n",len);//输出距离文件开头字节数
close(fd);
return 0;
}
输出结果:len=0
len=12
二、creat建立文件操作
1.原函数
表头文件
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
定义函数
int creat(const char *pathname, mode_t mode);
函数说明 建立一个名为pathname内容的文件,如果原来该文件存在,会将这个文件的长度截短为0(删除此文件)。creat()功能相当于使用下列的调用方式调用open(): open(const
char *pathname, (O_CREAT|O_WRONLY|O_TRUNC));
pathname——指向欲建立的文件路径字符串
mode——此文件的权限
返回值——成功返回新的文件描述词。错误返回-1,并把错误代码设给errno
2.参数取值
mode参数
S_IRWXU 00700用户(文件属主)具有读、写、执行权限
S_IRUSR 00400用户具有读权限
S_IWUSR 00200用户具有写权限
S_IXUSR 00100用户具有执行权限
S_IRWXG 00070组具有读、写、执行权限
S_IRGRP 00040组有读权限
S_IWGRP 00020组有写权限
S_IXGRP 00010组具有execute权限
S_IRWXO 00007其他具有读、写、执行权限
S_IROTH 00004其他用户有读权限
S_IWOTH 00002其他有写权限
S_IXOTH 00001其他具有执行权限
3.示例
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main()
{
int fd=creat("file",S_IRWXU);//建立名为file的文件,文件的权限为用户(文件属主)具有读、写、执行权限
char *arg="Hello World";
int wri=write(fd,arg,strlen(arg));
printf("wirte succeed,wri=%d\n",wri);//输出写入的字节数
close(fd);//关闭文件
return 0;
}
输出结果:wirte succeed,wri=11
三、mkstemp——建立唯一的临时文件操作
1.原函数
表头文件
#include "stdlib.h"
定义函数
int mkstemp(char *template);
函数说明 ——mkstemp()用来建立唯一的临时文件,Mkstemp()会以可读写模式和0600权限来打开该文件,如果该文件不存在则会建立该文件
template——建立名为template内容的文件,字符串中最后六个字符必须是XXXXXX,template所指的字符串必须声明为数组
返回值——建立(打开)成功返回文件描述词。失败返回NULL,并把错误代码存在errno中
2.示例
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
char mks[]="flie-XXXXXX";
int fd=mkstemp(mks);//建立名为flie的文件,权限默认可读可写
char *arg="Hello World";
int wri=write(fd,arg,strlen(arg));
printf("wirte succeed,wri=%d\n",wri);//输出写入的字节数
close(fd);
return 0;
}
运行结果:
wirte succeed,wri=11
喜欢的请点赞加关注,谢谢您