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、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序&#…...
OpenRGB终极指南:一个软件统一管理所有RGB设备,告别多软件混乱
OpenRGB终极指南:一个软件统一管理所有RGB设备,告别多软件混乱 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgramm…...
北航毕业论文LaTeX模板:3天掌握专业排版,告别格式焦虑
北航毕业论文LaTeX模板:3天掌握专业排版,告别格式焦虑 【免费下载链接】BUAAthesis 北航毕设论文LaTeX模板 项目地址: https://gitcode.com/gh_mirrors/bu/BUAAthesis 还在为毕业论文格式反复修改而焦虑吗?每年毕业季,无数…...
通过curl命令快速测试Taotoken接口连通性与模型响应效果
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过curl命令快速测试Taotoken接口连通性与模型响应效果 对于开发者而言,在集成大模型服务时,快速验证接口…...
Udemy课程下载器:如何高效离线学习Udemy课程内容?
Udemy课程下载器:如何高效离线学习Udemy课程内容? 【免费下载链接】udemy-downloader-gui A desktop application for downloading Udemy Courses 项目地址: https://gitcode.com/gh_mirrors/ud/udemy-downloader-gui 想要随时随地学习Udemy课程却…...
RunPod H100集群实战:64卡AI训练的物理级优化与成本重构
1. 项目概述:当64张H100不再只是大厂的专利,而是一支创业团队的日常训练环境你有没有算过一笔账:在主流公有云上,用8卡H100节点跑一个70B参数模型的全量微调,单次实验成本动辄上万美元?我去年帮一家做金融垂…...
利用 Taotoken 用量看板精细化追踪与管理 API 成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 用量看板精细化追踪与管理 API 成本 对于依赖大模型 API 进行开发的项目管理者或独立开发者而言,成本控…...
Longhorn分布式存储实践:构建高可用Kubernetes存储方案
Longhorn分布式存储实践:构建高可用Kubernetes存储方案 一、Longhorn概述 Longhorn是一个开源的分布式块存储系统,专为Kubernetes设计。它提供持久化存储解决方案,支持高可用性、数据冗余和自动故障转移。 Longhorn的核心特性:…...
从 Dify 配置页理解 RAG 的重要参数
RAG(Retrieval-Augmented Generation,检索增强生成)经常被一句话概括成“先检索,再回答”。这句话没有错,但如果真的要把一个知识库调到可用,仅仅理解这四个字还不够。真正影响答案质量的,往往是…...
告别虚拟机!用WSL2自带的SSH服务连接VSCode远程开发(附端口冲突解决)
告别虚拟机!用WSL2自带的SSH服务连接VSCode远程开发(附端口冲突解决) 在Windows系统上进行Linux开发时,传统虚拟机方案往往显得笨重且资源占用高。WSL2的出现彻底改变了这一局面,它提供了近乎原生的Linux内核体验&…...
神经网络概念解码:从物理直觉到工程权衡的思维地图
1. 项目概述:这不是又一本“手把手写反向传播”的书,而是一张神经网络的思维地图“NN#2 — Neural Networks Decoded: Concepts Over Code”这个标题里,“NN#2”不是版本号,而是刻意设计的编号——它暗示这是一场持续进行的认知迭…...
