当前位置:  技术问答>linux和unix

open和fopen的区别?

    来源: 互联网  发布时间:2015-12-11

    本文导语:  如题,看到好多调用设备文件的程序都是用的open函数,难道用fopen不可以吗? 主要求高手谈谈这两个函数的区别,以及具体在什么时候该用哪个函数? | 文件描述符是linux下的一个概念,linux下...

如题,看到好多调用设备文件的程序都是用的open函数,难道用fopen不可以吗?

主要求高手谈谈这两个函数的区别,以及具体在什么时候该用哪个函数?

|
文件描述符是linux下的一个概念,linux下的一切设备都是以文件的形式操作.如网络套接字、硬件设备等。当然包括操作文件。
fopen是标准c函数。返回文件流而不是linux下文件句柄。

|
我认为fopen和open最主要的区别是fopen在用户态下就有了缓存,在进行read和write的时候减少了用户态和内核态的切换,而open则每次都需要进行内核态和用户态的切换;表现为,如果顺序访问文件,fopen系列的函数要比直接调用open系列快;如果随机访问文件open要比fopen快。

|
fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api 
linux中的系统函数是open,fopen是其封装函数,个人观点。仅供参考。

|
设备文件不可以当成流式文件来用,只能用open
fopen是用来操纵正规文件的,并且设有缓冲的,跟open还是有一些区别

|
一般用fopen打开普通文件,用open打开设备文件

|
fopen是标准c里的,而open是linux的系统调用.
他们的层次不同.
fopen可移植,open不能

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt枚举desktop.action的类成员方法: open定义及介绍
  • 关于can总线open()系统调用函数与QDialog中的open()冲突
  • java命名空间javax.swing类jfilechooser的类成员方法: open_dialog定义及介绍
  • 先装open Solaris再装win7,怎么进入open?
  • java命名空间javax.sound.sampled类lineevent.type的类成员方法: open定义及介绍
  • man open正常,打开的是1部分,但man 2 open报错,报错信息如下
  • java命名空间javax.management.remote类jmxconnectionnotification的类成员方法: opened定义及介绍
  • 为什么这个open调用一定会失败?open("/proc/hide-252",O_RDWR|O_CREAT,0);
  • java命名空间java.util.logging类errormanager的类成员方法: open_failure定义及介绍
  • I open grub.conf in Nautilus , but it doesn't allow me to edit the file . How to open it in the editable mode ?
  • C++ I/O 成员 open():创建一个输入流
  • Open Watcom
  • java命名空间java.nio.channels类pipe的类成员方法: open定义及介绍
  • Open函数的inode疑问
  • java命名空间javax.print.attribute.standard类printerstatereason的类成员方法: interlock_open定义及介绍
  • 邮件客户端 Open-jACOB eMail
  • java命名空间javax.print.attribute.standard类printerstatereason的类成员方法: door_open定义及介绍
  • 开放下载管理器 Open Download Manager
  • java命名空间javax.management类jmx的类成员方法: open_type_field定义及介绍
  • open-iscsi的移植。。。有人做过吗?
  • java命名空间javax.print.attribute.standard类printerstatereason的类成员方法: cover_open定义及介绍
  • binlog分析程序 Open Replicator


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3