Linux系统编程(9)——基础IO(1)-open、read、write、文件描述符

打开文件上限:ulimit  可以查看文件打开数目,同时 ulimit -n  <数字>  可以修改文件打开数目。也就是说文件打开数目是有上限的,但是可以根据自己的使用情况来调整。

fread/fwrite/fopen/fclose  库函数

read/write/open/close  系统调用函数(Linux提供的比较底层的文件操作)

open

头文件:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h

函数:

int open(const char *pathname, int flags);   

int open(const char *pathname, int flags, mode_t mode);

参数列表:

pathname:路径,要打开或创建的目标文文件

flags:打开方式

flags分为: 

O_RDONLY: 只读打开        

O_WRONLY: 只写打开        

O_RDWR  : 读,写打开                  

注:这三个常量,必须指定一个且只能指定一个        

O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问权限        

O_APPEND: 追加写

返回值:        

成功:新打开的文件描述符fd        

失败:-1

#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>

int main(){
	//open的返回值:文件描述符
        //FILE*中包含了文件描述符
	int fd = open("./test.txt", O_RDONLY)  //只读打开
	printf("%d\n", fd);
	return 0;

        int fd = open("./test.txt", 0_RDONLY | O_CREAT)  
        //只读打开,文件存在就打开,文件不存在就自己创建


}

输出结果是:3

文件描述符表:

问:为什么是3?0,1,2去哪了?

答:0,1,2是标准输入,标准输出,标准错误,后序打开就接着打开。


read——文件描述符上执行读操作

函数:

ssize_t read(int fd, void *buf,size_t count)

size_t:表示有符号的长整形,不可为负数

ssize_t:表示可以为负数

char buf[1024]={0};
ssize_t n=read(fd,buf,sizeof(buf) - 1);    //返回值读到多少个字节
//fd开始读,读到buf中去,空间是sizeof(buf) - 1

返回值:成功读了多少字节 

write——写文件

char buf[1024]="hehe";
write(fd,buf,strlen(buf));
//buf写到fd中,要写的长度strlen(buf)

返回值是:成功写了多少个字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值