以前一直都是用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,参数可能不能一次搞对,比如,没有带第三个参数,那么生成的文件权限也会不对,于是后继再执行这个程序,就会有PermissionDeny,无法覆盖掉先前生成的文件。解决方法是手动用sudo权限删除掉生成的文件,重新执行正确的程序。
分享到:
相关推荐
C语言文件操作函数大全(详细全面的讲解并附有相关实例分析)。分享既是德啊!
C语言文件操作总结 c语言文件操作函数总结
C语言常用函数说明
常用C语言文件操作函数大全详细列出了C语言中文件的操作函数
C语言文件操作函数大全.doc clearerr(清除文件流的错误旗标) 相关函数 feof 表头文件 #include<stdio.h> 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的...
顾名思义,主要介绍C语言的文件操作函数,无须多言
C语言文件操作函数大全C语言文件操作函数大全C语言文件操作函数大全C语言文件操作函数大全C语言文件操作函数大全
C语言文件操作函数大全.txt
介绍了C语言中文件操作的各种函数,以及用发和注意事项,通过学习可以有效地掌握文件的操作。
C语言文件操作函数的封装
详细列举了个人搜集到的c语言文件操作函数
C语言文件操作技术仔细的介绍了c语言在文件操作方面的相关函数,还给出许多相关的例子和函数。
对C语言文件处理的大部分函数重新进行归纳整理,并赋以实例解说,让人快速掌握C语言文件处理函数的用法。
C语言文件流函数C语言文件流函数