首页 > 其他分享 >C语言文件操作函数open、write用法速记

C语言文件操作函数open、write用法速记

时间:2023-06-15 14:05:55浏览次数:33  
标签:文件 open pos C语言 write file config buf


以前一直都是用fopen、fwrite等高级函数写文件,这次尝试用open、write、close操作文件。代码如下:


int ret = OB_SUCCESS;
      int fd = open(config_file, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU  | S_IRWXG | S_IRWXO);
      static const int64_t buf_len = 512;
      int64_t pos = 0;
      char buf[buf_len];
      ssize_t size = 0;
      const char * config_file = "my.conf";

      if (0 >= fd)
      {
        TBSYS_LOG(WARN, "fail to create temp config file %s. msg=%s", config_file, strerror(errno));
        ret = OB_ERROR;
      }
      else
      {
        TBSYS_LOG(WARN, "fd=%d", fd);
        if (OB_SUCCESS == ret)
        {
          pos = 0;
          databuff_printf(buf, buf_len, pos, "[%s]\n", OBMS_RS_SECTION);
          OB_ASSERT(pos < buf_len);
          size = write(fd, buf, pos);
          if (size <= 0)
          {
            TBSYS_LOG(WARN, "fail %s", strerror(errno));
            ret = OB_ERROR;
          }
        }
	close(fd);
      }



重点:

open(config_file, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU  | S_IRWXG | S_IRWXO);

表示创建文件,用于写入。如果文件已经存在,则先将文件原有内容清空再写。重点是后面S_IRWXU | S_IRWXG | S_IRWXO这个参数,这里它表示所有人都拥有对生成文件的读写执行权限。这个一般来说不会有什么问题。可能遇到的问题是:

第一次学习写open,参数可能不能一次搞对,比如,没有带第三个参数,那么生成的文件权限也会不对,于是后继再执行这个程序,就会有Permission Deny,无法覆盖掉先前生成的文件。解决方法是手动用sudo权限删除掉生成的文件,重新执行正确的程序。




标签:文件,open,pos,C语言,write,file,config,buf
From: https://blog.51cto.com/u_16162111/6486718

相关文章

  • [网络安全] DVWA之 Open HTTP Redirect 攻击姿势及解题详析合集
    Lowlevel主页面如下:点击Quote1,发现url传递参数源代码审计源码如下:<?phpif(array_key_exists("redirect",$_GET)&&$_GET['redirect']!=""){header("location:".$_GET['redirect']);exit;}http......
  • HUAWEI CT6100 、 OpenWRT 重装系统到硬盘
    说明HUAWEICT6100作为一款老旧的瘦客户机,要从硬盘启动系统仅支持Legacy引导的系统。若要重装系统,则需要一些软硬件的帮助。需求环境:项目数量备注Linux主机/虚拟机1安装好gzip、parted、df等Windows主机1有硬盘的目标物理主机1U盘1装有......
  • 面试题:C语言中 printf("%d",sizeof('c')); 结果为什么是4?
    在C语言中,sizeof运算符用于获取数据类型或变量的字节大小。当您使用sizeof('c')时,它会返回字符常量'c'的字节大小。在C语言中,字符常量的类型是int,而不是char。尽管字符常量表示一个字符,但它实际上是以整数形式存储的。因此,sizeof('c')将返回4,即'c'字符常量的字节大小,这是因为......
  • 浅谈C语言指针的运用(函数与指针、数组与指针)
    1.函数与指针一个函数在编译以后会占用一定的内存,在c语言中函数一般是在栈里面,而函数名就是函数在栈中的首地址。那么接下来会讲解如何通过指针调用函数呢?用指针调用函数我们称为函数指针,指针作为一种数据类型,它指向或引用内存中的数据,那么指针同样可以用来存储函数地址(起始地址......
  • window.parent与window.opener的区别
    window.parent与window.opener的区别javascript调用主窗口方法2007-11-3013:42在这里总结一下,javascript调用父窗口(父页面)的方法。1:  window.parent是iframe页面调用父页面对象举例:a.html<html><head><title>父页面</title></head......
  • VScode配置C语言环境
    0.前言运行系统为【Windows11专业版】1.安装VScode 官网下载 VScode或使用电脑自带【MicrosoftStore】(微软商店)下载。2.运行配置VScode3.安装编译器(MinGW-W64GCC)下载地址官网:MinGW-w64蓝奏云:https://hyborn.lanzouw.com/iqb1x0i0wwjc密码:0000下载完成后把压缩......
  • 哈希搜索算法及C语言实现
    一、哈希搜索算法原理哈希搜索,也叫散列查找,是一种通过哈希表(散列表)实现快速查找目标元素的算法。哈希搜索算法通常适用于需要快速查找一组数据中是否存在某个元素的场景,其时间复杂度最高为O(1),而平均情况下的时间复杂度通常相当接近O(1),因此在实际应用中具有很高的效率和性能。哈......
  • 系统调用IO-11-read,write,lseek及mycpy的实现
    1.概述readNAMEread-readfromafiledescriptorSYNOPSIS#include<unistd.h>//从fd中读,读到buf中去,读count个字节ssize_tread(intfd,void*buf,size_tcount);DESCRIPTIONread()attemptstoreaduptocountbytesfrom......
  • 分散输入和集中输出------readv() 、 writev()
    参考:https://blog.csdn.net/zhizhengguan/article/details/117173049//功能:将数据从文件描述符读到分散的内存块中,即分散读。ssize_treadv(intfd,conststructiovec*iov,intiovcnt);//iovcnt代表选择iov中的几块内存,而不是选择第几块内存//功能:将多块分散的内存数......
  • [C语言/PTA] 学生成绩链表处理
    题目要求本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:structstud_node*createlist();structstud_node*deletelist(structstud_node*head,intmin_score);函数createlist利用scanf从输入......