linux读文件与写文件

所用到的头文件

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/stat.h>  //文件修改权限
#include<sys/types.h> //文件删除
#include<unistd.h>  //获取当前目录
#include<dirent.h>  //目录流
#include<pwd.h>  //获取用户名
#include<grp.h>  //获取组名
#include<time.h>  //获取通过时间将数字改为日历时间
#include<fcntl.h>
#define ARGS_CHECK(argc,num){if(argc!=num) \
    {fprintf(stderr,"args error\n");return -1;}}

#define ERROR_CHECK(ret,num,msg){if(ret == num){\
    perror(msg);return -1;}}

makefile

SRCS:=$(wildcard *.c)
EXES:=$(patsubst %.c,%,$(SRCS))
all:$(EXES)
%:%.c
	gcc $^ -o $@
clean:
	$(RM) $(EXES)
ssize_t read(int fd,void* buf,size_t count);
//1.count应当是申请内存的大小
//2.read前线清空buf

模拟读取文件

#include<43func.h>
int main(int argc ,char* argv[]){
    ARGS_CHECK(argc,2);
    int fd =open(argv[1],O_RDWR);
    ERROR_CHECK(fd,-1,"open");
    printf("fd = %d\n",fd);
    char buf[10] = {0};
    ssize_t st =  read(fd,buf,sizeof(buf));
    puts(buf);
    close(fd);
}
  1. buf[]越大,用户态和内核态切换次数越小
  2. 使用文件流的优势和劣势:零碎的写入,少量的系统调用。劣势:拷贝次数更多(需要拷贝到缓存区)
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤狐先生

如果有一点点帮助,可以给点支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值