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

linux的常用操作——open函数相关推荐

  1. linux的常用操作——read函数和write函数

    1 read函数 \qquad返回值:-1:读取失败:0:表示文件读完:>0:读取的字节数 \qquad参数:第一个参数:要读取文件的文件描述符:第二个参数:存取的地址:第三个参数:存取的字节数 ...

  2. linux的常用操作——查看和修改文件权限

    linux的常用操作--查看和修改文件权限 #1.查看当前用户 whoami#2.查看文件权限(r:read;w:write,x:execute) ls -l#3.修改文件\目录权限 chmod [w ...

  3. linux的常用操作——用户的添加、删除和查看

    linux的常用操作--用户的添加.删除和查看 #1.添加用户(用户名无大写字母) sudo adduser mumu passwd mumu #添加密码#2.添加用户(用户名中含有大写字母) #首先 ...

  4. Linux防火墙常用操作及端口开放

    Linux防火墙常用操作及端口开放 1.查看防火墙状态 firewall-cmd --state 2.开启防火墙 systemctl start firewalld.service 3.开启指定端口 ...

  5. R 语言常用操作与函数汇总

    总结了一下 R 语言中常用的一些操作与函数使用,抛砖引玉,分享一下给大家,如有错误的地方欢迎留言指正. 怎样显示 R 软件中某个包中包含的全部数据集? > library(MASS)> d ...

  6. linux:命令常用操作

    linux: 1,root操作: 2.内核系统操作 3.设备查看 4.截屏操作 5 设备内存管理 6 文件操作 新建文件 切换路径 7.内存操作 常用命令类型: ①yum命令 ②apt命令 ③ 1,r ...

  7. Linux shell常用操作指令(0)

    首先,说一下我跟Linux的接触的历史吧!第一次接触是在大一下学期的3月份,当时我参加了一个科创学习,接触到了有小型计算机之称的树莓派,在那段时间跟随老师从一开始的给树莓派烧录镜像到树莓派的一些基本配 ...

  8. linux的常用操作——C库函数和系统函数的关系

  9. linux的常用操作——程序调试gdb

    1.如何在linux下调试程序? \qquad在进行程序编译时,如果需要调试,那么需要加入调试指令. gcc filename.c -o 可执行文件名 -g \qquad对程序进行调试 gdb 可执行 ...

最新文章

  1. 陆首群:评人工智能如何走向新阶段?
  2. ASP.NET %%,%=%,%#%区别
  3. linux下配置Tilera MDE4.1.8方法
  4. QWebEngineView播放视频最大化
  5. powerdns 系列之二 PowerDNS Authoritative Server
  6. 修改elementUI的el-popconfirm 气泡确认框样式不起效果
  7. 显著性检验【t-test、方差分析、ks检验】
  8. Java代码签名证书申请和使用指南
  9. 程序安装--Outlook2016Professional+OraclePlsql
  10. 关于云计算必知的关键核心技术
  11. npm报错 This is probably not a problem with npm,there is likely additional logging output above可能的原因
  12. 爱心网页浪漫,博主司机搞事情啦,附百度网盘源码自取哦
  13. 集中式版本控制与分布式版本控制
  14. 特么的. 最终把 amobbs 的站长阿莫(莫进明)给回骂了一顿.
  15. Symbian 模拟器的JRE版本问题
  16. charCodeAt 和 String.fromCharCode 用法
  17. yale patt 的计算机系统导论,[转载]Yale N. Patt教授的《计算机系统概论》
  18. ECharts实现全国空气质量查询
  19. 实用围棋作战理论——围棋十诀,据说是从唐朝流传下来的哦
  20. 达内linux考试题,达内Linux工程师.doc

热门文章

  1. [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(spacy)
  2. java点击按钮结线程_多线程的Java应用程序在调试工具Netbeans中单击“停止”按钮时输出一个奇怪的结果...
  3. thinkphp用来做什么项目_thinkphp第1课:使用thinkphp创建一个项目
  4. 谁才是Transformer家族中的最强王者?谷歌告诉你答案
  5. 「小公式」平均数与级数
  6. 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
  7. 论文浅尝 | 基于平行新闻的Bootstrapping关系抽取
  8. 科普 | 动态本体简介
  9. jieba.cut与jieba.lcut的区别
  10. KMP算法的核心,是一个被称为部分匹配表(Partial Match Table)的数组以及next数组求解