linux中fopen和open的区别,Linux下open与fopen的区别

int open(const char *path, int access,int mode)

path 要打开的文件路径和名称

access 访问模式,宏定义和含义如下:

O_RDONLY         1    只读打开

O_WRONLY         2    只写打开

O_RDWR           4    读写打开

还可选择以下模式与以上3种基本模式相与:

O_CREAT     0x0100   创建一个文件并打开

O_TRUNC     0x0200   打开一个已存在的文件并将文件长度设置为0,其他属性保持

O_EXCL      0x0400   未使用

O_APPEND    0x0800   追加打开文件

O_TEXT      0x4000   打开文本文件翻译CR-LF控制字符

O_BINARY    0x8000   打开二进制字符,不作CR-LF翻译

mode 该参数仅在access=O_CREAT方式下使用,其取值如下:

S_IFMT      0xF000   文件类型掩码

S_IFDIR     0x4000   目录

S_IFIFO     0x1000   FIFO 专用

S_IFCHR     0x2000   字符专用

S_IFBLK     0x3000   块专用

S_IFREG     0x8000   只为0x0000

S_IREAD     0x0100   可读

S_IWRITE    0x0080   可写

S_IEXEC     0x0040   可执行

FILE *fopen(char *filename, char *mode)

filename 文件名称

mode 打开模式:

r   只读方式打开一个文本文件

rb  只读方式打开一个二进制文件

w   只写方式打开一个文本文件

wb  只写方式打开一个二进制文件

a   追加方式打开一个文本文件

ab  追加方式打开一个二进制文件

r+  可读可写方式打开一个文本文件

rb+ 可读可写方式打开一个二进制文件

w+  可读可写方式创建一个文本文件

wb+ 可读可写方式生成一个二进制文件

a+  可读可写追加方式打开一个文本文件

ab+ 可读可写方式追加一个二进制文件

open和fopen的区别:

前者属于低级IO,后者是高级IO。

前者返回一个文件描述符,后者返回一个文件指针。

前者无缓冲,后者有缓冲。

前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。

后者是在前者的基础上扩充而来的,在大多数情况下,用后者。

open 是Linux/Unix系统调用 返回的是文件句柄,文件的句柄是文件在文件描述副表里的索引,

fopen是C的库函数,返回的是一个指向文件结构的指针。

fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api

linux中的系统函数是open,fopen是其封装函数。

fopen最终还是要调用底层的系统调用open。

linux下open和fopen的区别

二者返回值不同. fopen可以指定宽字符和ASCI.

[转] linux 下 进程和线程的区别

1.进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是C ...

Windows下与Linux下编写socket程序的区别 《转载》

原文网址:http://blog.chinaunix.net/uid-2270658-id-308160.html [[Windows]] [Windows: 头文件的区别] #include&lt ...

[进程管理]linux 下 进程和线程的区别(baidu 面试)

进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是CPU调度和分派的 ...

linux 下 进程和线程的区别

1.进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是C ...

linux下 su 与 su - 的区别和使用

Linux下su与su -命令的区别   在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用servic ...

Linux下tmpfs与ramfs的区别

ramfs是Linux下一种基于RAM做存储的文件系统.在使用过程中你就可以把ramfs理解为在普通的HDD上建立了一个文件系统,而现在HDD被替换成了RAM,因为是RAM做存储所以会有很高的存储 ...

docker在windows下和linux下网络底层的一些区别

windows和linux下的docker运行时的网络结构是有区别的 a.windows下,默认使用Hyper-v创建一个linux虚拟机,承载docker.所以从外向内的路径为: windows - ...

Linux下profile environment bashrc的区别

先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文.将/etc/profile 中的export LANG=zh_CN删除,将LNAG=z ...

随机推荐

cdrecord光盘烧录工具

我们是透过 cdrecord 这个命令来进行文字介面的烧录行为,这个命令常见的选项有底下数个: [root@www ~]# cdrecord -scanbus dev=ATA <==查询烧录机位 ...

2014 Multi-University Training Contest 5

hdu4911 max(逆序数-k,0) #include #include #include #inclu ...

&lbrack;LeetCode&rsqb; 56&period; Merge Intervals 解题思路

Given a collection of intervals, merge all overlapping intervals. For example,Given [1,3],[2,6],[8,1 ...

django开发简易博客(五)

这一节将讲述如何添加comments库与ajax的支持. 一.添加comments库 comments库是是django框架内置的一个评论库,可以快速的搭建岀一个评论系统,不过再自定义方面有些麻烦,不 ...

使用php导出excel并使用excel的求和统计函数对excel进行汇总

1. 使用excel的统计函数对excel进行多条件汇总求和: =SUMIFS($D$:$D$, $A$:$A$, :$B$, :$C$, "三级片") 例如: =SUMIFS(求 ...

orcale 使用创建日期排序然后分页每次取排序后的固定条数

需求: 一个使用mybatis分页插件的分页列表, 现在要求新增一条数据或者修改一条数据后,显示在最前端 思路: 使用sql , 先将查询出来的数据排序, 然后使用rownum > page*s ...

临时表 on commit delete rows 与 on commit preserve rows 的区别

-- 事务级临时表:提交时删除数据 create global temporary  table tmp_table1 (        x     number ) on commit delete ...

乘积尾零&vert;2018年蓝桥杯B组题解析第三题-fishers

标题:乘积尾零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 ...

Android 开发工具类 25&lowbar;getJSON

获取 JSON 数据并解析 import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; im ...

UOJ 348 【WC2018】州区划分——子集卷积

题目:http://uoj.ac/problem/348 参考:https://www.cnblogs.com/NaVi-Awson/p/9242645.html#%E5%AD%90%E9%9B%86 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值