Linux中append函数的用法,linux C代码 open函数参数:O_APPEND问题求助

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

没有截图,直接上代码吧。

原代码是这样的:

#include

#include

#include

#include

#include

int main()

{

int fd=-1;

ssize_t size=-1;

off_t offset=-1;

char buf1[]="0124553";

char buf2[]="dsfafads";

char filename[]="test1.txt";

int len=8;

fd=open(filename,O_RDWR|O_CREAT,S_IRWXU);

if(-1==fd)

{

printf("fd open fd:%d",fd);

return -1;

}

size=write(fd,buf1,len);

if(size!=len)

{

printf("size buf1 write size:%d len=%d fd=%d" ,size,len,fd);

return -1;

}

offset = lseek(fd,32,SEEK_SET);

if(-1==offset)

{return -1;}

size=write(fd,buf2,len);

if(size!=len)

{

return -1;

}

close(fd);

return 0;

}

运行结果是正常的,在test1.txt文件中输入了两段字符,中间隔着'\0'字符。

我把 fd=open(filename,O_RDWR|O_CREAT,S_IRWXU);中的参数O_RDWR改为O_APPEND参数,这个参数书上的定义为打开文件的时候,每次写操作前,将写操作的位置移动到文件的结尾处。然后我在test1.txt中预先加入一段字符,再次运行修改参数后编译的程序,经测试在size=write(fd,buf1,len);这个地方size获得的值是-1。后来又直接用简单的write和open函数进行O_APPEND参数测试,还是出现同样的问题,这是为什么?求大佬讲解一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iNeuOS工业互联平台,生产过程业务联动控制

1. 概述工业物联网也好、工业互联网也好或是其他生产系统,反向控制始终无法回避。搞工业最直接、最体现效果的两个方面是采集各种数据和生产过程业务控制,所谓大数据预测和分析,那是仁者见仁、智者见智,下一篇文章我们会专业来讨…

t-sql里Linked server跨数据库查询

set ANSI_NULLS ON set QUOTED_IDENTIFIER ONgoALTER procedure [dbo].[updateData] as/*--必须先创建一个LinkedServerEXEC sp_addlinkedserverserverlyg,--被访问的服务器别名 srvproduct,providerSQLOLEDB,datasrclyg --要访问的服务器*/--登录上一步建好的服务器&#x…

linux防火墙开放所有端口命令,linux centos7 防火墙及端口开放相关命令

一、防火墙相关命令1、查看防火墙状态 : systemctl status firewalld.service注:active是绿的running表示防火墙开启2、关闭防火墙 :systemctl stop firewalld.service3、开机禁用防火墙自启命令 :systemctl disable firewalld.se…

如何使用 BenchmarkDotNet 对 C# 代码进行基准测试

BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,它可以将你的方法转化为基准并跟踪这些方法,最后对这些方法的性能提供一些测试报告,使用 BenchmarkDotNet 玩 基准测试 是非常容易的。你可以利用 BenchmarkD…

MSSQL 2008 企业管理器打开命令

MSSQL 2008 Server做了一些调整,取数据是按照200或者1000条查看,对权限控制的更加严格,已经去掉可以添加用户的那个存储过程。同时在启动实例时也加强权限的限制,如果没有权限那么将无法打开。 在MSSQL 2008 Server中如果想通过命…

笑说设计模式-小白逃课被点名

简介 工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个共同的接口来…

原来论文排版还有这样的学问

论文的重要加分点除了内容,还有它小天最近经常遇到小伙伴的诉苦:“我的毕业论文提交一次就被导师批评一次,内容不行就算了,格式也有问题!改论文改到绝望”“期刊的版式要求不是统一的,为了多投几家&#xf…

红帽linux5安装Oracle 9i enterprise

红帽linux5安装Oracle 9i enterprise 本文转自:http://database.51cto.com/art/201004/194082.htm摘要:如果你在红帽Linux5上安装Oracle 9i enterprise遇到了问题,不防看一看下面的文章,希望能帮你解决有关Oracle9i实际应用的问题…

powerpc-linux-gcc,关于powerpc-linux-uclibc-gcc的使用

做了点东西需要使用linux下ldap库,我装的linux上已经有ldap库,在程序中#include 了。用gcc编译时:gcc filename.c,会报找不到ldap.h文件以及ldap.h文件中相关函数的错误但是使用gcc filename.c -lldap,就能够编译通过了。后来要求…

神经网络告诉我,谁是世界上最「美」的人?

「魔镜魔镜告诉我,谁是世界上最美的女人?」这句伴随童年的话也有现实版哦~神经网络可以预测人脸颜值,这方面也出现了不少研究。今年年初华南理工大学的研究者发布论文,并公开了数据集 SCUT-FBP5500。本文作者 Dima Shu…

开源推荐:.Net Core3.1 + EF Core + LayUI 封装的MVC版后台管理系统

ASP.NET Core是一个由微软创建的,用于构建Web应用程序,API,微服务的Web框架。它使用常见的模式,例如MVC(模型-视图-控制器),依赖注入,和一个由中间件构成它基于Apache 2.0许可开放源…

android中文api(85)——HorizontalScrollView

前言 本章内容是android.widget.HorizontalScrollView,译为"横向滚动条",版本为Android 2.3 r1,翻译来自"Tina",感谢"Tina"为大家带来精彩的翻译稿 !期待你加入Android API 中文的翻译&…

linux 连接wifi wpa2,RHEL等Linux系统使用wpa_supplicant以WPA-PSK/WPA2-PSK连接WIFI

以RHEL6.4为实验对象:1、安装 wpa_supplicant.yum install wpa_supplicant2、编辑 wpa_supplicant 配置文件vim /etc/sysconfig/wpa_supplicant以下格式:# Use the flag "-i" before each of your interfaces, like so:# INTERFACES"-ie…

如何在 C# 中使用只读的 Collections

集合 表示一组可用于获取和存储的对象,在 C# 中提供了两种类型的集合。普通集合泛型集合前者存在于 System.Collections 命名空间下,属类型不安全的,后者存在于 System.Collections.Generic 命名空间下,属类型安全的。不可变对象 …

操作系统和数据库的知识梳理(思维导图)

使用思维导图工具 freemind 提供下载 源码文件和 Java网页版 http://files.cnblogs.com/facingwaller/osanddb.rar

令人难以理解的软件工程师:几千行代码能搞定的为什么要写几万行?

一我们公司的 Windows 版软体已经有十多年的历史,经过历代工程师的整治之后,内容已经凌乱不堪。过去三个月,我找时间自己重写了整个主程序。原本数万行的程序,被我重写的只剩下数千行,功能不变,效能更好&am…

如何从 dump 文件中提取出 C# 源代码?

一:背景 相信有很多朋友在遇到应用程序各种奇葩问题后,拿下来一个dump文件,辛辛苦苦分析了大半天,终于在某一个线程的调用栈上找到了一个可疑的方法,但 windbg 常常是以 汇编 的方式显示方法代码的,可惜的是…

通信开源linux,Linux环境进程间通信

Linux环境进程间通信(一)http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/index.htmlLinux环境进程间通信(二): 信号(上)http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.htmlLinux环境进程间通信(二): 信号(下)http://www.ibm.com/developerworks/cn…

真人拳皇项目Alpha阶段的回顾——史经浩

经过一个多月艰辛的努力,我们小组终于在1/14按时发布了真人拳皇的alpha版。按照计划,这一周是总结过去这段时间的经验教训,为即将到来的beta阶段作准备。回顾刚刚过去的一个多月,从plan阶段的天马行空,到后来的逐渐降级…

在栈中压入一个字符串c语言,面试题 31:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,…