系统调用接口---IO

*int open(const char pathname, int flags, mode_t mode);
open(文件名,选项标志,权限)
pathname:文件路径名
flags:标志位
必选其一:O_RDONLY ,O_WRONLY, O_RDWR
可选项:
O_CREAT:如果文件不存在,则创建
O_EXCL:跟O_EXCL一起使用,如果文件已经存在报错返回。
O_TRUNC:打开文件时截断文件长度为0—清空内容
O_APPEND:将写入设置为追加写。
w+:O_RDWR| O_CREAT| O_TRUNC
mode:文件的权限设置,0777—如果使用了O_CREAT就一定要指定
返回值:成功返回非负整数—操作句柄----文件描述符;失败返回-1

*ssize_t write(int fd, const void buf, size_t count);
write(句柄,数据,长度)
fd:open返回的操作句柄,用于明确操作的是哪个打开的文件
buf: 要写入文件的数据
count:要写入的数据长度
返回值:成功返回实际写入文件的数据长度 失败返回-1;

*ssize_t read(int fd, void buf, size_t count);
fd:open返回的操作句柄,用于明确操作的是那个大开的文件
buf: 存放读取到的数据的缓冲区
count:要读取的数据长度
返回值:成功返回实际读取到文件的数据长度 失败返回-1;

off_t lseek(int fd, off_t offset, int whence);
lseek(句柄, 偏移量, 相对位置)
fd:open返回的操作句柄
offset:偏移量; whence:
相对起始偏移位置-SEEK-SET/SEEK_CUR/SEEK_END
返回值:跳转后的位置相对于文件起始位置的偏移量 失败返回-1

int close(int fd);

1 #include<stdio.h>  //printf                                                                                                                                          
  2 #include<unistd.h>  //fork
  3 #include<stdlib.h>  //exit
  4 #include <fcntl.h>   //open
  5 #include <sys/stat.h>  //open
  6 #include<string.h> //strlen
  7 
  8 int main(int argc,char* argv[])  //运行参数个数   运行参数字符首地址
  9 {
 10    //当前权限设置为0
 11    umask(0);
 12    //打开文件
 13    //open(文件名,打开方式,操作权限)
 14    int fd=open("test.txt",O_RDWR|O_CREAT|O_APPEND,0777);
 15    if(fd<0){
 16      perror("open error");
 17       return -1;
 18    }
 19 
 20    char *ptr="今天你开心吗?\n";
 21    //write(句柄,数据,长度)
 22    int ret=write(fd,ptr,strlen(ptr));
 23    if(ret<0){
 24      perror("write error");
 25      exit(-1);
 26    }    
 27  
 28    //lseek(操作句柄,偏移量,相对位置)
 29    lseek(fd,0,SEEK_SET);
 30 
 31    char buf[1024]={0};
 32    //read(操作句柄,数据,数据大小)
 33    ret=read(fd,buf,1023);
 34    if(ret<0){
 35       perror("read error");
 36       exit(-1);
       }
 38    printf("读取成功!\n");
 39    //关闭文件
 40    close(fd);
 41    return 0;
 42 }        

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值