open/write/read/lseek/close
int open(const char * pathname,int flags,mode_t mode)
功能:打开文件
pathname :指定要打开的文件名称
flages: 选项参数
必选参数: O_RDONLY (读) O_WRNOLY (写) O_RDWR(只能选一)(读写)
可选参数: O_CREAT 若文件存在则打开,否则创建新文件
O_EXCL 与O_CREAT同时使用,若文件存在则报错 ,不存在则创建。
O_TRUNC 打开文件的同时截断文件为0长度(清空)
O_APPEND 写数据的时候总是写到文件末尾。
mode 权限。
返回值: 文件描述符(正整数) 文件的操作句柄,
如果失败返回-1
ssize_t read(int fd,void* buf,size_t count)
从fd文件中读取count长度的数据,放到buf中
返回值: 返回实际读取的字节数, 失败: -1
读到末尾为0
ssize_t write(int fd,const void * buf,size_t count)
fd: open打开文件所返回的文件描述符
buf: 要写入的数据
count: 要写入的字节数
返回值: 成功实际写入的字节数。 如果错误返回-1
off_t lseek(int fd,off_t offset,int whence)
跳转fd文件的读写位置到指定处
whence: SEEK_SET SEEK_CUR SEEK_END:
offset 偏移量
**umask(0)**
//有可能创建文件,则一定要指定文件权限.
int close(int fd);
umask(0); 将当前进程的文件创建权限掩码修改为mask
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
#include<string.h>
#include<sys/stat.h>
int main()
{
umask(0);
int fd=open("test.txt",O_RDWR|O_CREAT,0777);
if(fd<0){
perror("open error");
return -1;
}
char * ptr="天已经黑了~~\n";
int ret=write(fd,ptr,strlen(ptr));
if(ret<0){
perror("write error");
return -1;
}
printf("write len:%d\n",ret);
char buf[1024]={0};
if(ret<0){
perror("write error");
return -1;
}
else if(ret==0)
{
printf("at end of file\n");
return -1;
}
else {
lseek(fd,0,SEEK_SET);
ret=read(fd,buf,1023);
printf("read buf:[%s]-[%d]\n",buf,ret);
}
close(fd);
return 0;
}