Linux学习(三)----文件打开及创建

news2024/9/22 15:50:46

1 demo1.c的建立

首先打开终端输入

touch file1

接着输入:

vi demo1.c

 接着重新打开一个终端,输入:

man 2 open

 2 demo1.c内容编辑

2.1 复制头文件

2.2 程序基础框架

 #include <sys/types.h> 
 #include <sys/stat.h>
 #include <fcntl.h>

int main()      
{


    return 0;
} 

2.3 open函数介绍

 该函数有两个函数原型,其实是参数的数量问题。

函数原型1:
int open(const char*pathname,int flags);

第一个参数是要打开的文件名,第二个参数是特殊常量,用于指定怎么打开文件。具体常量如下参数:
O_RDONLY: 只读打开
O_WRONLY: 只写打开
O_RDWR: 读,写打开
这三个常量,必须制定一个且只能指定一

 示例:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
int main()
{

    int fd;
    
    fd = open("./file1",O_RDWR);
    
    printf("fd = %d\n",fd);
    return 0;
}		

保存,接着执行程序

gcc demo1.c

./a.out

 执行结果如下:

 接着删除文件file1 ,输入如下:

rm file1   

./a.out

 运行结果如下:

 可以验证返回值:成功打开返回打开文件的文件描述符,是int类型,失败返回-1.

2.3 自动创建文件

若想实现文件不存在,自动创建文件则需要函数原型2,如下所示:

函数原型2:
int open(const char*pathname,int flags,mode_t mode);

O_CREAT: 若文件不存在,则创建它,需要使用mode选项。来指明新文件的访问权限
O_APPEND: 追加写,如果文件已经有内容,这次打开文件所写的数据附加到文件的末尾而不覆盖原来的内容

前两个参数与上相同,第三个参数是设定该文件的权限,具体参数如下

S_IRUSR    : 文件所有者有读(r)权限

S_IWUSR   : 文件所有者有写(w)权限

S_IRGRP   : 文件所属组有读(r)权限

S_IWGRP  : 文件所属组有写(w)权限

S_IROTH   : 文件所属other有读(r)权限

S_IWOTH  : 文件所属other有写(w)权限

总结:

权限主要分为如下三类:

1 可读:R ----4

2 可写:  W ----2

3 执行: X ----1

0600-给文件所有者可读可写权限

 示例,首先输入:

cp demo1.c demo2.c 

vi demo2.c

 示例:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
int main()
{

    int fd; 
    fd = open("./file1",O_RDWR);
    if(fd == -1){
        printf("open file1 failed\n");
        fd = open("./file1",O_RDWR|O_CREAT,0600);
        if(fd>0){
             printf("create file1 success\n");  
      
        }

    } 

    return 0;
}		

保存,输入:

gcc demo2.c

./a.out

 结果如下:

 

以上所述,如有错误,恳请各位大佬指正。

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

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

相关文章

同态比较算法

参考文献&#xff1a; [PS73] Paterson M S, Stockmeyer L J. On the number of nonscalar multiplications necessary to evaluate polynomials[J]. SIAM Journal on Computing, 1973, 2(1): 60-66.[IZ21] Iliashenko I, Zucca V. Faster homomorphic comparison operations …

基于蛾群算法优化的BP神经网络(预测应用) - 附代码

基于蛾群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于蛾群算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.蛾群优化BP神经网络2.1 BP神经网络参数设置2.2 蛾群算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…

cpolar做一个内网穿透

因为不在公司&#xff0c;需要访问公司的数据库&#xff0c;所以做一个内网穿透 下载安装 下载地址&#xff1a; https://dashboard.cpolar.com/get-started 下载后是个压缩包&#xff0c;解压后傻瓜式安装 操作隧道 安装后打开Cpolar Web UI 登录账号&#xff0c;查看隧…

python面试题--1

目录 python面试题 1&#xff09;什么是Python&#xff1f;使用Python有什么好处&#xff1f; 2&#xff09;什么是PEP 8&#xff1f; 3&#xff09;什么是序列化和非序列化&#xff1f; 4&#xff09;如何解释Python&#xff1f; 5&#xff09;如何在Python中内存管理&a…

Unity3D软件安装包分享

目录 一、软件简介 二、软件下载 一、软件简介 Unity3D是一款全球知名的游戏开发引擎&#xff0c;由Unity Technologies公司开发。它提供了一个跨平台、多功能的开发环境&#xff0c;支持创建2D和3D游戏、交互式应用、虚拟现实、增强现实等多种类型的应用程序。以下是Unity3D…

山西电力市场日前价格预测【2023-08-27】

日前价格预测 预测明日&#xff08;2023-08-27&#xff09;山西电力市场全天平均日前电价为318.11元/MWh。其中&#xff0c;最高日前电价为356.66元/MWh&#xff0c;预计出现在19: 15。最低日前电价为273.48元/MWh&#xff0c;预计出现在04: 30。 价差方向预测 1&#xff1a; 实…

01-Flask-简介及环境准备

Flask-简介及环境准备 前言简介特点Flask 与 Django 的比较环境准备 前言 本篇来介绍下Python的web框架–Flask。 简介 Flask 是一个轻量级的 Web 框架&#xff0c;使用 Python 语言编写&#xff0c;较其他同类型框架更为灵活、轻便且容易上手&#xff0c;小型团队在短时间内…

785. 判断二分图

785. 判断二分图 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 785. 判断二分图 https://leetcode.cn/problems/is-graph-bipartite/description/ 完成情况&#xff1a; 解题思路&#xff1a; 题目解释&#x…

清洁能源使用的社会发展意义

应用清洁能源是转变经济增加途径的有效手段&#xff0c;能够在减少污染物、降低企业经营成本的同时&#xff0c;提高企业经济效益和社会经济效益。 应用清洁能源是保护环境的最佳方式和必然选择&#xff0c;改变末端治理的现状&#xff0c;采取以预防为主的环境保护与发展理…

opencv/C++ 人脸检测

前言 本文使用的测试资源说明&#xff1a; opencv版本&#xff1a;opencv 4.6.0 人脸检测算法 Haar特征分类器 Haar特征分类器是一个XML文件&#xff0c;描述了人体各个部位的Haar特征值。包括&#xff1a;人脸、眼睛、鼻子、嘴等。 opencv 4.6.0自带的Haar特征分类器&…

护目镜佩戴检测识别算法

护目镜佩戴检测识别算法通过opencvpython网络深度学习模型&#xff0c;护目镜佩戴检测识别算法实时监测工人的护目镜佩戴情况&#xff0c;发现未佩戴或错误佩戴的情况&#xff0c;及时提醒调整。与C / C等语言相比&#xff0c;Python速度较慢。也就是说&#xff0c;Python可以使…

pyqt5-问答框

choice QMessageBox.question(self, Change Text?, Would you like to change the button text?,QMessageBox.Yes | QMessageBox.No, QMessageBox.No) 分别对应 1 父组件 2 问答框标题 3 问答框文字 4 问答框展示的按钮 5 问答框的默认按钮选择

Scikit-Learn 和深度学习怎么选择

大家好&#xff0c;今天我们要聊聊一个机器学习的话题&#xff1a;Scikit-Learn 和深度学习&#xff0c;到底哪一个更适合解决你的问题&#xff1f;我们先来看看这两种技术的异同点&#xff0c;然后再讲讲如何在实际问题中做出选择。 1. Scikit-Learn 与深度学习&#xff1a;谁…

JavaWeb优雅实现接口参数校验

目录 1 背景2 如何优雅地校验参数2.1 官方指导意见2.2 注解用法说明 3 ControllerAdvice同时配置过滤多个包3.1 springboot 多个RestControllerAdvice时的拦截顺序3.2 解决方法 1 背景 要对方法的参数进行校验&#xff0c;最简单暴力的写法是这个样子&#xff1a; public stati…

Linux centos7 bash编程(小练习)

一、打印九九乘法口诀 这一个for循环嵌套的小练习&#xff0c;难度不大。提供一种写法&#xff0c;供参考&#xff1a; #!/bin/bash # 文件名&#xff1a;99table.sh # 打印输出九九乘法口诀表 for i in {1..9} do for ((j1;j<$i;j)) do …

网络层协议——ip

文章目录 1. 网络层2. IP协议2.1 协议头格式 3. 网段划分3.1 特殊的IP地址3.2 IP地址的数量限制 4. 私有IP地址和公网IP地址 1. 网络层 在应用层解决了如何读取完整报文、序列化反序列化、协议处理问题。在传输层解决了可靠性问题。那么网络层IP的作用是在复杂的网络环境中确定…

自动化备份方案

背景说明 网上有很多教程&#xff0c;写的都是从零搭建一个什么什么&#xff0c;基本上都是从无到有的教程&#xff0c;但是&#xff0c;很少有文章提及搭建好之后如何备份&#xff0c;这次通过请教GitHub Copilot Chat&#xff0c;生成几个备份脚本&#xff0c;以备后用。 注…

【Java笔记】分布式id生成-雪花算法

随着业务的增长&#xff0c;有些表可能要占用很大的物理存储空间&#xff0c;为了解决该问题&#xff0c;后期使用数据库分片技术。将一个数据库进行拆分&#xff0c;通过数据库中间件连接。如果数据库中该表选用ID自增策略&#xff0c;则可能产生重复的ID&#xff0c;此时应该…

【Hadoop】Hadoop入门概念简介

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…

阻止 form 表单的默认提交

目录 表单提交的3种形式1&#xff0c;默认提交2&#xff0c;submit 提交3&#xff0c;button 提交 阻止提交方法1—— return false方法2 —— 阻止 submit 的默认行为方法3 —— 针对 button 的处理 表单提交的3种形式 MDN - form 提交表单时&#xff0c;未指定 form.action …