linux系统下的文件操作

打开文件

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

  1. 返回值:文件描述符

  2. pathname: 要打开或创建的目标文件

  3. flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。

参数:
O_RDONLY: 只读打开
O_WRONLY: 只写打开
O_RDWR : 读,写打开
这三个常量,必须指定一个且只能指定一个
O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问 权限
O_APPEND: 追加写

关闭文件

int close(int fd);

fd:文件描述符

写文件

ssize_t write(int fd, const void *buf, size_t count);

  1. fd:文件描述符
  2. buf:向文件写入的指针
  3. count:写入的字节数
int main()
{
  int fd = open("log.txt",  O_WRONLY | O_CREAT | O_TRUNC,0666 );
  int count=5;
  char buf[]="这是个测试\n";
  while(count--)
  {
    write(fd,buf,strlen(buf));
  }
  close(fd);
  return 0;
}

在这里插入图片描述

读文件

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

  1. fd:文件描述符
  2. buf:读取文件的指针
  3. count:读取的字节数`
int main()
{
  
  int fd = open("log.txt",  O_RDONLY,0666 );
  char ch[128];
  ssize_t s= read(fd,ch,sizeof(ch)-1);
  if(s>0)
  {
    ch[s]=0;
  }
  printf("%s",ch);
  close(fd);
  return 0;
}

在这里插入图片描述

文件描述符fd

Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入0, 标准输出1, 标准错误2.
0,1,2对应的物理设备一般是:键盘,显示器,显示器

进程是如何管理打开的文件的?

在这里插入图片描述
进程内部有过管理文件指针的数组,当我们增加打开的文件时,就会从头遍历,找到没有使用的下标,分配给新文件
(注:如果文件关闭的话,下标会被回收,给下一个打开的文件)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值