本文主要是介绍c open close read write lseek,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
几个系统函数
open
int open(const char *pathname, int flags, ...); //mode
O_RDONLY 只读
O_WRONLY 只写
O_RDWR 读写
O_CREAT 若不存在创建
O_ APPEND 末尾添加
如果是有O_CREAT,最后参数是权限参数,否则忽略
S_IRWXU 0700 用户权限读写执行
close
int close(int fd);
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>int main()
{int fd = open("test", O_RDONLY | O_CREAT, S_IRWXU);printf("fd = %d\n", fd);if (fd == -1) printf("open failed\n");close(fd);return 0;
}
read
size_t read (int fd, void* buf, size_t cnt);
write
size_t write (int fd, void* buf, size_t cnt);
lseek
off_t lseek(int fd, off_t offset, int whence);
whence
SEEK_CUR 当前偏移 最后指向 当前移移+offset
SEEK_SET 把offset设为当前偏移
SEEK_END 指向结尾 可以用来获取文件大小
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>int main()
{int fd = open("test", O_RDONLY | O_CREAT,S_IRWXU);printf("fd = %d\n", fd);if (fd == -1) printf("open failed\n");char mem[256];memset(mem,'a',256);write(fd,mem,256);lseek(fd,128,SEEK_SET);memset(mem,0,256);int res = read(fd,mem,256);printf("res = %d\n", res);int filesize = lseek(fd,0,SEEK_END);printf("filesize = %d\n", filesize);close(fd);return 0;
}
输出
fd = 3
res = 128
filesize = 256
这篇关于c open close read write lseek的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!