zoukankan      html  css  js  c++  java
  • linux文件的通用操作方法学习

    2014-07-29 23:36:10

      在linux下用文件描述符来表示设备文件和普通文件。文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现。

      文件描述符示文件系统中连接用户空间和内核空间的枢纽。当打开一个或者创建一个文件时,内核空间创建相应的结构,并生成一个整型的变量传递给用户空间的对应进程。进程用这个文件描述符来对文件进行操作。

      文件描述符的范围示0~OPEN_MAX,因此是一个有限的资源,在使用完毕后要及时释放,通常示调用从close()函数关闭。注意的是文件描述符的值仅在同一个进程中有效,即不同进程文件描述符,同一个值很可能描述的不是同一个设备或普通文件。在里linux系统中有3个已经分配的文件描述符,即标准输入,标准输出和标准错误,他们文件描述符的值分别问0 1 和2。可以查看/dev/下的stdin(标准输入) stout(标准输出)和stderr(标准错误),会发现分别指向/proc/self/fd/目录下的0 1 2文件。

      1.
        打开创建文件open(),creat()函数

      查看函数功能可在终端输入 man 2 open,此手册包含了函数所含头文件,函数功能,函数参数取值

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

            int open(const char *pathname,int flags,mode_t mode);

      两者差别在于flags取值,当你man 2 open的时候你会看到flags的取值,当flags使用O_CREAT时要指定mode的值,其实就是创建文件比说明权限!

      以下是一个简单的打开文件的程序:

     1 #include <sys/types.h>
     2 #include <sys/stat.h>
     3 #include <fcntl.h>
     4 #include <stdio.h>
     5 
     6 int main(void)
     7 {
     8     int fd = -1;     //文件描述符声明
     9     char filename[] = "text.txt";//打开的文件名
    10     fd = open(filename,O_RDWR); //打开的方式为可读写方式
    11     if(fd == -1)  //打开失败
    12     {
    13         printf("open file s% is  failed!,fd:%d
    ",filename,fde);
    14     }
    15     else        //打开成功
    16     {
    17         printf("open file s% sucess!,fd:%d
    ",filename,fd);
    18     }
    
    20     return 0;
    21 }
  • 相关阅读:
    no match for call to ‘(std::__cxx11::string {aka std::__cxx11::basic_string
    一转眼,已四年
    线程或进程绑定到特定的cpu
    微信好友信息统计-图、词云和热图
    微信聊天机器人-存储好友分享消息
    Qt之加减乘除四则运算-支持负数
    windows粘贴板操作-自己的应用和windows右键互动
    Qt之QDomDocument操作xml文件-模拟ini文件存储
    Qt之表格控件蚂蚁线
    Qt之移动硬盘热插拔监控
  • 原文地址:https://www.cnblogs.com/weilai1/p/3876763.html
Copyright © 2011-2022 走看看