Linux系统编程--IO
文章目录
- 一、系统调用
- 1.open()
- 1.1 所需基础知识
- 1.2. open() 详解
- 1.3 示例代码
- 二、标准IO
- 三、高级IO
一、系统调用
1.open()
1.1 所需基础知识
Linux遵循一切皆是文件的理念,因此,很多的交互工作都是通过读取和写入文件来完成。
文件必须被打开才能被访问。文件可以以只读方式或者只写方式打开,或者两者兼有。一个打开的文件通过唯一的文件描述符进行引用,该描述符是打开文件的元数据至其本身的映射。在Linux内核中,这个描述符,用一个整数表示 (int) ,简写为fd。文件描述符在用户空间中共享,允许用户程序用文件描述符直接访问文件。
1.2. open() 详解
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>//调用成功返回文件描述符,失败返回-1int open (const char* name, int flags);int open (const char* name, int flags, mode_t mode);
flags参数必须是一下之一:
| 参数 | 含义 |
|---|---|
| O_RDONLY | 只读 |
| O_WRONLY | 只写 |
| O_RDWR | 读写模式 |
flags参数可以和以下一个或多个值进行按位或运算,用以修改打开文件请求的行为。
| 参数 | 含义 |
|---|---|
| O_APPEND | 追加模式打开,文件位置指针将被置于文件末尾 |
| O_ASYNC | 当指定文件可写或者可读时产生一个信号(默认SIGIO) |
| O_CREAT | 当指定的name文件不存在时,将由内核来创建 |
| O_DIRECT | 打开文件用于直接I/O |
| O_DIRECTORY | 如果name不是目录,open()调用将会失败,这个标志用于opendir()内部使用 |
| O_EXCL | 和O_CREAT一起给出的时候,如果name给定的文件已经存在,则open()调用失败,用来防止文件创建时出现竞争 |
| O_LARGEFILE | 给定文件打开时使用64位偏移量,这样大于2G的文件也能被打开 |
| O_NOFOLLOW | 如果name是一个符号链接,open()调用会失败 |
| O_NONBLOCK | 如果可以,文件将在非堵塞模式下打开 |
| O_SYNC | 打开文件用于同步IO |
| O_TRUNC | 如果文件存在,且为普通文件,并允许写,将文件的长度截断为0 |
1.3 示例代码
以打开 /etc/services 文件为例
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>using namespace std;int main()
{int fd;fd = open("/etc/services",O_RDONLY);if(fd == -1){cerr << "open() failed";}else{cout << "open success" << endl;cout << "fd = " << fd << endl;}return 0;}
效果图:

二、标准IO
三、高级IO
相关文章:
Linux系统编程--IO
文章目录 一、系统调用1.open()1.1 所需基础知识1.2. open() 详解1.3 示例代码 二、标准IO三、高级IO 一、系统调用 1.open() 1.1 所需基础知识 Linux遵循一切皆是文件的理念,因此,很多的交互工作都是通过读取和写入文件来完成。 文件必须被打开才能被…...
亚马逊云科技通过生成式AI,帮助清华RIOS加速计算和分析的处理效率
近日,硬件创建平台Efabless宣布了其第一届“生成式AI开源芯片设计挑战赛”(AI Generated Open-Source Silicon Design Challenge)的评选结果。来自清华大学的RISC-V国际开源实验室(RIOS Lab)团队基于亚马逊云科技云上科…...
全志T113-S3入门资料汇总(避坑指南)一
也是闲着无事买了个芒果派的T113的小板子,因为自己以前搞过Linux,工作也跟Linux相关,本以为可以很快搞好开发环境,结果还是折腾了两个周末,所以就把资料整理下,关键的地方列出来,希望大家少走弯…...
3dMax全球学习资源、资源文件和教程 !
此样例教育教程和学习资源旨在提供使用Autodesk 3ds Max时的计划知识和培训、正确的工作流、流程管理和最佳实践。 您在Autodesk三维设计领域的职业生涯 有关使用3ds Max和Maya在计算机图形领域开始职业生涯的提示(包括新的3ds Max和Maya介绍教程,以复…...
API接口是什么?有哪些免费的API接口?
API(接口)是什么? 举个常见的例子,在京东上下单付款之后,商家选用顺丰发货,然后你就可以在京东上实时查看当前的物流信息。京东和顺丰作为两家独立的公司,为什么会在京东上实时看到顺丰的快递信…...
USB Server应用于汇丰晋信基金
为了满足UKey远程连接调用、安全集群管理需求,汇丰晋信基金选择了朝天椒USB Server作为其解决方案。朝天椒USB Server以其卓越的性能和可靠性,为汇丰晋信基金提供了稳定的Ukey连接管理服务。这一选择不仅提高了汇丰晋信基金的工作效率,还保障…...
[BSidesCF 2019]Kookie 1 , cookie伪造
给了一个用户和密码 用户名:cookie 密码:monster 登录后查看cookie 发现就是用户名维持登录 那么修改用户名为 admin 得到flag...
如何查看MySQL的安装位置
MySQL的安装位置 1、查看安装目录 参数 路径 解释 备注 --basedir /usr/bin 相关命令目录 mysqladmin mysqldump等命令 --datadir /var/lib/mysql/ mysql 数据库文件的存放路径 --plugin-dir /usr/lib64/mysql/plugin mysql插件存放路径 --log-error …...
ui设计岗位招聘要求有哪些? 优漫动游
UI设计师的工作是接到使用者轮廓、线框草稿后,创造出好看、好用的画面,视情况会搭配VisualDesigner(视觉设计师),不过偶尔还是需要自己做图,包含插图、icon绘制等;透过设计过的画面,…...
Swift报错:“‘nil‘ is incompatible with return type ‘User‘”
func getUserById(userId: Int) -> User {if (userId ! nil) {...}return nil } 上述代码报了一个错误:“nil is incompatible with return type User”,表示“nil”与返回类型“User”不兼容。 解决方案: 将返回值类型改为Optional类型…...
LabVIEW利用局部放电分析高压电气设备状态诊断
LabVIEW利用局部放电分析高压电气设备状态诊断 目前,高压电气设备状态的监控系统解决了早期故障检测的问题。局部放电起源于电力电气装置的绝缘。局部放电会导致绝缘层逐渐磨损和加速老化,因此可能导致绝缘完全击穿。因此,局部放电检测及其特…...
TCP/IP UDP广播无法发送或接收
TCP/IP UDP广播无法发送或者接收数据 在看《TCP/IP 网络编程》这本书的时候,看到广播那一节,跟着书上写代码,怎么写都不行,广播就是没法发送/接收,发送端一直在发送数据,接收端就是没有反应。 对了好几遍…...
清理Maven仓库中下载失败的文件
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
服贸会2023 | 希尔贝壳入选“智赋百业”人工智能融合发展与安全应用典型案例
9月6日,服贸会(中国国际服务贸易交易会)“2023人工智能融合发展与安全应用”论坛在国家会议中心举行,论坛由国家工业信息安全发展研究中心、世界贸易网点联盟主办,旨在促进人工智能领域贸易合作,充分发挥人…...
axios请求多个服务器
在此之前, 请求的服务器需要后端设置可跨域 此文章中主要有两种方案: const apis {api1: http://aaa.com/,api2: http://bbb.com/ }(1) 把baseURL置空不设置, 定义一个新的axios const service axios.create({timeout: 300000, // 5分钟 })把完整的url链接放入到请求中 ex…...
vs2022不能加载winform界面
今天遇到vs2022加载winform界面错误, The service ‘Microsoft.VisualStudio.Shell.Design.Serialization.DesignerDocDataService’ must be installed for this feature to work。 当前vs版本: Microsoft Visual Studio Enterprise 2022 (64 位) - Cur…...
CMakeList.txt
CMakeList.txt的写法 前言一个最近写好的CMakeList.txt对上边CMakeList.txt的说明修改 前言 复习一下CMakeList.txt的写法,以下面的一个CMakeList.txt为例 一个最近写好的CMakeList.txt cmake_minimum_required(VERSION 3.17)project(QtVTKProject)# INCLUSION OF Qt # set(…...
华为云使用脚本初始化Linux数据盘
初始化新挂载的磁盘 登录云服务器,执行以下命令获取自动初始化磁盘脚本。 wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh 说明: 若回显异常,请检查云服务器是否绑定弹性公…...
leetcode 129. 求根节点到叶节点数字之和
2023.9.8 好久没写回溯题了,有点陌生ToT。 本题思路就是通过回溯保存所有根节点到叶子节点的路径,然后将这些路径转化为数字并全部相加。 直接看代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tre…...
嵌入式开发-11 Linux下GDB调试工具
目录 1 GDB简介 2 GDB基本命令 3 GDB调试程序 1 GDB简介 GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。 一般来说,GDB主要帮助你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序&#…...
SpringAI集成Ollama实战:从零构建本地AI对话服务
1. 环境准备:搭建Ollama本地AI模型服务 想要在本地运行AI对话服务,首先需要部署Ollama这个轻量级的大模型运行环境。Ollama最大的优势在于它能让开发者在普通配置的电脑上就能运行各种开源大模型,而不需要昂贵的GPU服务器。 安装过程非常简单…...
EcomGPT-中英文-7B电商模型实战:基于YOLOv8的商品图像识别与文案生成联动
EcomGPT-中英文-7B电商模型实战:基于YOLOv8的商品图像识别与文案生成联动 1. 引言 想象一下这个场景:你正在看一场电商直播,主播语速飞快地介绍着几十款商品。你刚对其中一款水杯产生兴趣,还没来得及问材质和容量,画…...
Harness:统一企业级 DevOps 平台的新标准
核心导读:随着云计算和微服务架构的普及,传统 DevOps 工具链越来越碎片化。Harness 作为一个集 CI/CD、GitOps、功能发布、云成本管理、混沌工程于一身的企业级平台,正在改变团队的交付方式。本文深入探讨 Harness 如何解决现代化 DevOps 的核…...
国之重器 openKylin 入驻 AtomGit:打造全球领先的智能操作系统开源根社区
操作系统是数字基础设施的核心基石,传统 Linux 操作系统用户和开发者经常面临系统软件更新不稳定、存量软件不兼容、开发适配成本高、显示渲染效率低等问题。在 AI 浪潮席卷全球的当下,将 AI 能力与操作系统已成紧密结合,打造智能交互新范式已…...
Pixel Script Temple 为C++高性能计算项目生成优化脚本
Pixel Script Temple 为C高性能计算项目生成优化脚本 1. 高性能计算开发的痛点 在C高性能计算领域,开发者经常面临一个共同困境:明明硬件资源充足,但程序性能就是上不去。你可能也遇到过这样的情况 - 代码逻辑没问题,算法也正确…...
[高级配置]:解决Insyde BIOS隐藏选项访问难题的开源工具技术指南
[高级配置]:解决Insyde BIOS隐藏选项访问难题的开源工具技术指南 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh…...
writeup
3-hafuhafu - Writeup by AI 题目信息 项目内容平台BugKu类型Crypto (RSA)考点RSA 加密、大数分解、私钥计算 题目描述 题目给出了一个 RSA 公钥和一段 Base64 编码的密文,要求解密得到 flag。 公钥信息: pk (25572000680139535995611501720832880…...
【内测开启】一个 Token,让你的Agent拥有地图能力!
各位AI大佬/极客朋友们: 期待已久的 百度地图 Map Agent Plan 正式开启首批内测招募啦!✨ 我们深知独立开发者和 OpenClaw 玩家们的痛点,所以这次我们玩点不一样的: ✅ 极简集成: 告别复杂API申请流程,一个…...
Maxwell Fields Calculator双模式切换指南:堆栈与代数表达式输入实战解析
Maxwell Fields Calculator双模式切换指南:堆栈与代数表达式输入实战解析 在电磁仿真领域,Maxwell Fields Calculator一直是工程师进行后处理分析的利器。随着2025 R1版本的推出,一项革命性的功能——双模式表达式输入,彻底改变了…...
强化学习实战:用Python手把手实现值迭代与策略迭代算法(附完整代码)
强化学习实战:用Python手把手实现值迭代与策略迭代算法(附完整代码) 强化学习作为机器学习的重要分支,近年来在游戏AI、自动驾驶、机器人控制等领域展现出惊人潜力。对于初学者而言,理解算法原理固然重要,但…...
