当前位置: 首页 > news >正文

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遵循一切皆是文件的理念&#xff0c;因此&#xff0c;很多的交互工作都是通过读取和写入文件来完成。 文件必须被打开才能被…...

亚马逊云科技通过生成式AI,帮助清华RIOS加速计算和分析的处理效率

近日&#xff0c;硬件创建平台Efabless宣布了其第一届“生成式AI开源芯片设计挑战赛”&#xff08;AI Generated Open-Source Silicon Design Challenge&#xff09;的评选结果。来自清华大学的RISC-V国际开源实验室&#xff08;RIOS Lab&#xff09;团队基于亚马逊云科技云上科…...

全志T113-S3入门资料汇总(避坑指南)一

也是闲着无事买了个芒果派的T113的小板子&#xff0c;因为自己以前搞过Linux&#xff0c;工作也跟Linux相关&#xff0c;本以为可以很快搞好开发环境&#xff0c;结果还是折腾了两个周末&#xff0c;所以就把资料整理下&#xff0c;关键的地方列出来&#xff0c;希望大家少走弯…...

3dMax全球学习资源、资源文件和教程 !

此样例教育教程和学习资源旨在提供使用Autodesk 3ds Max时的计划知识和培训、正确的工作流、流程管理和最佳实践。 您在Autodesk三维设计领域的职业生涯 有关使用3ds Max和Maya在计算机图形领域开始职业生涯的提示&#xff08;包括新的3ds Max和Maya介绍教程&#xff0c;以复…...

API接口是什么?有哪些免费的API接口?

API&#xff08;接口&#xff09;是什么&#xff1f; 举个常见的例子&#xff0c;在京东上下单付款之后&#xff0c;商家选用顺丰发货&#xff0c;然后你就可以在京东上实时查看当前的物流信息。京东和顺丰作为两家独立的公司&#xff0c;为什么会在京东上实时看到顺丰的快递信…...

USB Server应用于汇丰晋信基金

为了满足UKey远程连接调用、安全集群管理需求&#xff0c;汇丰晋信基金选择了朝天椒USB Server作为其解决方案。朝天椒USB Server以其卓越的性能和可靠性&#xff0c;为汇丰晋信基金提供了稳定的Ukey连接管理服务。这一选择不仅提高了汇丰晋信基金的工作效率&#xff0c;还保障…...

[BSidesCF 2019]Kookie 1 , cookie伪造

给了一个用户和密码 用户名&#xff1a;cookie 密码&#xff1a;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设计师的工作是接到使用者轮廓、线框草稿后&#xff0c;创造出好看、好用的画面&#xff0c;视情况会搭配VisualDesigner&#xff08;视觉设计师&#xff09;&#xff0c;不过偶尔还是需要自己做图&#xff0c;包含插图、icon绘制等&#xff1b;透过设计过的画面&#xff0c;…...

Swift报错:“‘nil‘ is incompatible with return type ‘User‘”

func getUserById(userId: Int) -> User {if (userId ! nil) {...}return nil } 上述代码报了一个错误&#xff1a;“nil is incompatible with return type User”&#xff0c;表示“nil”与返回类型“User”不兼容。 解决方案&#xff1a; 将返回值类型改为Optional类型…...

LabVIEW利用局部放电分析高压电气设备状态诊断

LabVIEW利用局部放电分析高压电气设备状态诊断 目前&#xff0c;高压电气设备状态的监控系统解决了早期故障检测的问题。局部放电起源于电力电气装置的绝缘。局部放电会导致绝缘层逐渐磨损和加速老化&#xff0c;因此可能导致绝缘完全击穿。因此&#xff0c;局部放电检测及其特…...

TCP/IP UDP广播无法发送或接收

TCP/IP UDP广播无法发送或者接收数据 在看《TCP/IP 网络编程》这本书的时候&#xff0c;看到广播那一节&#xff0c;跟着书上写代码&#xff0c;怎么写都不行&#xff0c;广播就是没法发送/接收&#xff0c;发送端一直在发送数据&#xff0c;接收端就是没有反应。 对了好几遍…...

清理Maven仓库中下载失败的文件

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

服贸会2023 | 希尔贝壳入选“智赋百业”人工智能融合发展与安全应用典型案例

9月6日&#xff0c;服贸会&#xff08;中国国际服务贸易交易会&#xff09;“2023人工智能融合发展与安全应用”论坛在国家会议中心举行&#xff0c;论坛由国家工业信息安全发展研究中心、世界贸易网点联盟主办&#xff0c;旨在促进人工智能领域贸易合作&#xff0c;充分发挥人…...

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界面错误&#xff0c; The service ‘Microsoft.VisualStudio.Shell.Design.Serialization.DesignerDocDataService’ must be installed for this feature to work。 当前vs版本&#xff1a; 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数据盘

初始化新挂载的磁盘 登录云服务器&#xff0c;执行以下命令获取自动初始化磁盘脚本。 wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/datadisk/LinuxVMDataDiskAutoInitialize.sh 说明&#xff1a; 若回显异常&#xff0c;请检查云服务器是否绑定弹性公…...

leetcode 129. 求根节点到叶节点数字之和

2023.9.8 好久没写回溯题了&#xff0c;有点陌生ToT。 本题思路就是通过回溯保存所有根节点到叶子节点的路径&#xff0c;然后将这些路径转化为数字并全部相加。 直接看代码&#xff1a; /*** 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下的程序调试工具。 一般来说&#xff0c;GDB主要帮助你完成下面四个方面的功能&#xff1a; 1、启动你的程序&#xff0c;可以按照你的自定义的要求随心所欲的运行程序&#…...

3D点云分割实战:如何用稀疏卷积SparseConvNet提升模型效率(附Facebook开源库指南)

3D点云分割实战&#xff1a;稀疏卷积SparseConvNet的高效实现与调优指南 在自动驾驶、机器人导航和增强现实等领域&#xff0c;3D点云数据的处理正成为计算机视觉的新前沿。与密集的2D图像不同&#xff0c;点云数据天生具有稀疏性——场景中大部分区域是空白&#xff0c;仅有少…...

Bilibili-Evolved:视频播放卡顿解决方案:实现60fps流畅体验的智能优化方法

Bilibili-Evolved&#xff1a;视频播放卡顿解决方案&#xff1a;实现60fps流畅体验的智能优化方法 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved 你是否曾在观看高清动画时遇到画面卡顿&…...

如何高效解决Windows驱动存储臃肿问题?DriverStore Explorer带来75-90%的空间释放效率提升

如何高效解决Windows驱动存储臃肿问题&#xff1f;DriverStore Explorer带来75-90%的空间释放效率提升 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统随着使用时间增…...

从查表到公式:PT100温度转换的两种实现(附STM32+MAX31865完整代码)

从查表到公式&#xff1a;PT100温度转换的两种实现&#xff08;附STM32MAX31865完整代码&#xff09; 在工业测量和精密温度控制领域&#xff0c;PT100铂电阻因其出色的稳定性和线性度成为温度传感的首选。当工程师通过MAX31865芯片获取到PT100的电阻值后&#xff0c;如何高效准…...

大模型本地推理显卡怎么选?实测Tesla P40、Titan RTX和RTX A3000的性价比之战

大模型本地推理显卡选购实战指南&#xff1a;Tesla P40、Titan RTX与RTX A3000深度横评 当你在深夜调试一个70亿参数的LLM模型时&#xff0c;突然弹出的"CUDA out of memory"错误提示可能是每个AI开发者最不愿看到的画面。选择一张合适的推理显卡&#xff0c;往往意…...

浏览器插件:让Markdown预览效率提升300%的秘密武器

浏览器插件&#xff1a;让Markdown预览效率提升300%的秘密武器 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 作为开发者、学生或技术写作者&#xff0c;你是否经常遇到这些困扰…...

大模型小白入门指南:从工作原理到实用技巧(收藏版)

本文深入解析了大语言模型&#xff08;LLM&#xff09;的核心工作原理&#xff0c;包括Transformer架构的自注意力机制和位置编码&#xff0c;以及预训练和指令微调的训练范式。同时&#xff0c;文章还提供了实用的提示工程技巧&#xff0c;帮助读者更好地与AI协作。此外&#…...

3大核心价值!六音音源开源工具:洛雪音乐跨版本修复解决方案

3大核心价值&#xff01;六音音源开源工具&#xff1a;洛雪音乐跨版本修复解决方案 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 在数字音乐体验日益依赖软件生态的今天&#xff0c;洛雪音乐1.…...

AI驱动的科研绘图革命:DeTikZify如何终结图表代码的手动时代

AI驱动的科研绘图革命&#xff1a;DeTikZify如何终结图表代码的手动时代 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 当deadline遇上绘图难题&a…...

深度学习环境搭建不再难:PyTorch 2.6镜像快速部署指南

深度学习环境搭建不再难&#xff1a;PyTorch 2.6镜像快速部署指南 1. 为什么选择PyTorch 2.6镜像 PyTorch作为当前最流行的深度学习框架之一&#xff0c;其2.6版本带来了显著的性能提升和新特性。但对于初学者来说&#xff0c;从零开始配置PyTorch环境往往面临诸多挑战&#…...