linux的常用操作——open函数

1.linux系统函数

\qquad使用linux系统函数和使用一般C库函数没有什么本质区别。在linux下编写c语言程序时,如果使用系统函数,也需要包含系统函数的头文件,函数也有参数,返回值,这和使用C库函数时的操作是一样的。

2.open函数

\qquadopen函数,有两种类型,一种是两个参数;一种是三个参数。两个参数的open()函数适合于打开已经存在的函数;三个参数的open()函数适合于创建并打开一个不存在的文件。

2.1 open函数有两个参数时

\qquadopen()函数的返回值:当返回-1时,发生错误;当返回文件描述符(不是-1)时,打开成功。
\qquadopen()函数的两个参数:第一个参数:文件路径,需要用双引号把文件路径引起来;第二个参数:打开方式,有以下三种分别是,O_RDWR可读可写,O_RDONLY只读,O_WRONLY只写。
使用系统函数open()函数举例,open()需要包含三个头文件。
\qquad当函数只有两个参数时,举例。

#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<errno.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{int open_fd;int close_fd;open_fd = open("hello.txt",O_RDWR);if(open_fd==-1){perror("open fail!");exit(1);}else{printf("open success,文件描述符=%d\n",open_fd);}close_fd = close(open_fd);if(close_fd==-1){perror("close fail!");exit(1);}else if(close_fd==0){printf("close success\n");}return 0;
}

\qquadopen()函数和close()函数是成对出现的,文件打开之后,在使用之后必须进行关闭。close()函数只有一个,并且只有一个参数。
\qquadclose()函数的返回值:当关闭成功时,返回0;当关闭失败时,返回-1。
\qquadclose()函数的参数:close()函数只有一个参数,即文件描述符,也就是open()函数打开成功之后的返回值。

2.2 open函数有三个参数时

\qquad有三个参数的open()函数可以用于创建新文件。

\qquad返回值:当返回-1时,发生错误;当返回文件描述符(不是-1)时,打开成功。

\qquadopen()函数的三个参数:
\qquad \quad第一个参数:文件路径,同上;
\qquad \quad第二个参数:除了上述的O_RDWR可读可写,O_RDONLY只读,O_WRONLY只写外,还有 O_CLOEXEC, O_CREAT, O_DIRECTORY, O_EXCL, O_NOCTTY, O_NOFOLLOW, O_TMPFILEO_TRUNC。这里创建文件采用O_RDWR | O_CREAT
\qquad \quad第三个参数:基于数字设置文件权限,实际的文件权限=本地掩码取反之后,与设置的文件权限进行按位与操作查看本地掩码命令:umask。我的本地掩码是:0002,二进制就是000 000 010,本地掩码取反就是111 111 101;设置的权限是777,二进制就是111 111 111,我们将两者按位与得到111 111 101,转换过来就是775,也就是rwx rwx r-x

\qquad举例:

#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<errno.h>
#include<stdlib.h>
#include<unistd.h>int main()
{int open_fd;int close_fd;open_fd = open("creat.txt",O_RDWR|O_CREAT,0777);if(open_fd==-1){perror("open fail!");exit(1);}else{printf("open syccess!\n");}close_fd = close(open_fd);if(close_fd==-1){perror("close fail");exit(1);}else if(close_fd==0){printf("close success!\n");}return 0;
}

\qquad执行之后,果然生成一个空文件creat.txt,权限是rwx rwx r-x

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

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

相关文章

【计算机网络复习】1.2.2 OSI参考模型

OSI参考模型一、七层OSI参考模型&#xff08;法定标准&#xff09;1.1 ISO/OSI参考模型 —— 怎么来的&#xff1f;1.2 ISO/OSI参考模型1.2.1 通信过程1.2.2 数据封装一、七层OSI参考模型&#xff08;法定标准&#xff09; 1.1 ISO/OSI参考模型 —— 怎么来的&#xff1f; 为…

当世界模型被用于sim2real:机器人通过视觉想象和交互尝试来学习

来源&#xff1a;AI科技评论 编译&#xff1a;杏花编辑&#xff1a;青暮人类是如何掌握这么多技能的呢&#xff1f;好吧&#xff0c;最初我们并非如此&#xff0c;但从婴儿时期开始&#xff0c;我们通过自监督发觉并练习越来越复杂的技能。但这种自监督并不是随机的——儿童发展…

带偏移量的AES加密工具

自定义的一个对称加密工具类AESUtil.java public static final String ENCRYPTION_ALGORITHM "AES";public static final String CIPHER_PARAM "AES/CBC/PKCS5Padding";private static final String DEFAULT_KEY_AND_IV "1234567890ABCDEF";/…

linux的驱动开发——基于linux的单片机开发简介

1.基于linux的单片机开发和裸机开发的区别 \qquad单片机的裸机开发和基于linux的单片机开发&#xff0c;是有这本质的不同。 \qquad单片机的裸机开发更加底层&#xff0c;它是直接对寄存器进行操作&#xff0c;进而实现单片机的各种功能&#xff0c;即使有些MCU提供了库函数&am…

【计算机网络复习】1.2.4 TCP/IP参考模型和5层参考模型

TCP/IP参考模型和5层参考模型一、OSI参考模型与TCP/IP参考模型二、5层参考模型一、OSI参考模型与TCP/IP参考模型 相同点&#xff1a; 1、都分层 2、基于独立的协议栈的概念 3、可以实现异构网络互联 不同点 1、OSI定义三点&#xff1a;服务、协议、接口 2、OSI先出现&…

量子物理学家:如果宇宙中所有物体突然消失,会剩下一个「空宇宙」吗?

文章来源&#xff1a;TNW如果量子物理学家能够证明现实世界的一切都是不真实的&#xff0c;会发生什么&#xff1f;你愿意接受这个假设吗&#xff1f;如果说&#xff0c;此时此刻你正在看的这篇文章&#xff0c;其实并不存在&#xff0c;你会不会觉得这句话是在胡说&#xff1f…

linux的驱动开发——交叉编译器

1.交叉编译器 \qquadARM裸机、Uboot移植、linux移植这些都需要在linux系统上进行编译&#xff0c;编译就需要编译器。在linux系统中&#xff0c;可以使用gcc命令对c语言程序进行编译&#xff0c;但gcc编译器是针对X86架构的&#xff0c;现在需要对ARM架构的代码进行编译。所以我…

【计算机网络复习 物理层】2.1.1 物理层基本概念

物理层基本概念一、基本概念一、基本概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。 物理层主要任务&#xff1a;确定与传输媒体接口有关的特性 >定义标准 机械特性&#xff1a; 定义物理连接的特性&#xff0c;规定…

江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得)

链接&#xff1a;https://ac.nowcoder.com/acm/contest/635/H来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K64bit IO Format: %lld题目描述 艾兰岛和沃夫岛的时间算法很不一样&…

为什么数学的用途这么大?

来源&#xff1a;遇见数学翻译&#xff1a;萧福坤译自 Science Digest, August 1985原文:http://210.60.224.4/ct/content/1986/00050197/0008.htm我的父亲是一位物理学家&#xff0c;所以我从小耳濡目染&#xff0c;当他与同事讨论问题时&#xff0c;我坐在桌旁&#xff0c;「…

参数列表和数组的相互转换

使用es6的扩展运算符 ...js var arr [1,2,3]; function add(a,b,c){ return a b c; }// add(arr[0],arr[1],arr[2]) add.apply(null,arr); ## 研究Object1. 这是一个函数&#xff08;类&#xff09;&#xff1b;2. 该类身上有自身的方法还有原型的方法 ![](./img/1.png)1. O…

数据库基础知识——MySQL服务的启动和停止

文章目录1.数据库的启动1.1 从计算机管理启动1.2 从cmd启动2.数据库的停止1.1 从计算机管理停止1.2 从cmd停止\qquad在登录数据库之前&#xff0c;必须保证数据库已经启动。数据库的启动和停止有两种方式&#xff1a;从计算机管理启动和停止和从cmd启动和停止。1.数据库的启动 …

【计算机网络复习 物理层】2.1.2 数据通信基础知识

数据通信基础知识一、典型的数据通信模型二、数据通信相关术语三、三种通信方式四、两种数据传输方式一、典型的数据通信模型 二、数据通信相关术语 通信的目的是传送消息。 数据&#xff1a;传送信息的实体&#xff0c;通常是有意义的符号序列。 信号&#xff1a;数据的电气…

无线网络未来十年十大产业趋势

来源:华为编辑:蒲蒲5G的发展速度非常之快&#xff0c;截止2021年9月&#xff0c;全球已经部署了有176张5G商用网络&#xff0c;超过150万5G站点。5.2亿5G用户的感官体验&#xff0c;也迎来全面升级焕新&#xff1a;高清视频的时长占比提升到了80%&#xff1b;流行的短视频APP已…

git入门(廖雪峰老师)

根据廖雪峰老师的git教程进行学习总结&#xff1b; 1、之前上班用的都是svn进行管理&#xff0c;那么svn和git有什么区别呢&#xff1f; svn是集中式的版本控制系统&#xff0c;而git是分布式版本控制系统&#xff0c;那么集中式和分布式版本控制系统有什么区别呢&#xff1f; …

linux基础知识——进程相关概念

1 什么是程序&#xff1f; \qquad程序&#xff0c;是经过编译完成的二进制文件&#xff0c;程序存储在磁盘上&#xff0c;并不占用系统资源。 2 什么是进程&#xff1f; \qquad进程&#xff0c;是一个抽象概念&#xff0c;进程是程序动态的描述&#xff0c;它在内存中执行&…

【计算机网络复习 物理层】2.1.3 码元、波特、速率、带宽

码元、波特、速率、带宽一、码元二、速率一、码元 码元是指用一个固定时长的信号波形&#xff08;数字脉冲&#xff09;&#xff0c;代表不同离散值的基本波形&#xff0c;是数字通信中数字信号的计量单位&#xff0c;这个时长内的信号称为k进制码元&#xff0c;而该时长称为码…

智慧竞赛正在升温

来源&#xff1a;混沌巡洋舰原文&#xff1a;摘自 edge 系列图书 《那些最重要的科学新发现》迈克斯泰格马克(MaxTegmark)&#xff1a;麻省理工学院物理系终身教授&#xff0c;平行宇宙理论研究专家&#xff0c;未来生命研究所创始人&#xff1b;著有《生命3.0》《穿越平行宇宙…

LeetCode算法

一日一题&#xff01; 转载于:https://www.cnblogs.com/weibo-blog/p/10779370.html

linux基础知识——CPU相关知识

1.CPU处理程序过程 \qquad在存储介质中&#xff0c;从下至上是进程的时间加载的先后顺序&#xff0c;也是存储空间大小的顺序。 2.MMU(内存管理单元) \qquadMMU是位于CPU内部的一个物理器件。在程序运行时&#xff0c;会产生进程&#xff0c;同时产生虚拟内存空间&#xff0c…