LInux 设备操作

1.系统调用(两种)

(1)系统调用     (2)用户编程接口API

1.1 优势

        (1)系统调用直接操作系统核心, 函数库要判断头文件和函数是否存在等步骤效率更低。

        (2) 函数库跨平台更好,系统调用无法跨平台(Linux  到  Window  上)。

1.2.系统调用手册查看

        在Linux终端中            man 系统调用函数     如果不是    man  2  系统调用函数

2.open系统调用

open  赋值权限时  Ubuntu 有掩码0022

解决方案: 可在程序中加上    

umask(0);  //解除掩码

返回:open(), openat(), and creat() return the new file descriptor, or -1 if an error occurred (in which case, errno is set appropriately).

翻译:open()、openat()和create()返回新的文件描述符,如果发生错误,则返回-1(在这种情况下,会适当设置errno)。

这种系统调用返回的是fd(文件描述符)  从3 开始 0,1,2 被系统占用;

3.write 写文件

        打开写入文件

         使用与read类似

4.read   读文件

        strlen 会把数据转为字符。

返回: 如果错误返回error 或者 -1;

           正确返回读取到的数据数量,如果读取完则; 

关闭  close(读文件文件描述符);

关闭顺序:

close(读文件文件描述符);

close(写文件文件描述符);

C++输出:

cin >> ;

cin.get ();    保留换行符  使用strlen() 之后会把换行符给丢掉;

cin.get()不会忽略空格、回车键,而cin>>会忽略空格、回车,直到读取到字符;

cin.getline();  不保留换换行符

bzero( buf, sizeof(buf) );// 清空buf 内存

5. chown  修改权限

6. mkdir  创建文件夹

7.opendir 打开一个目录      宏定义与取别名 全大写

8. lseek 文件随机读写

        一个文件打开之后默认光标都是在文件最开始的位置。

off_t lseek (int  fd,    off_t offset,   int base);

        使用lseek 来对搜索的起始位置, 再对光标进行偏移 offset 达到想要的位置。

初始位置base : 三种值

        SEEK_SET      文件开始位置

        SEEK_CUR      当前光标位置

        SEEK_END      文件末尾位置

9. Ubuntu  判断文件属性

       以 struct  dirent*  结构体来存储访问到的文件信息。

     1.   根据以上存储文件信息的结构体中:

dirfanwen->d_type != DT_DIR && dirfanwen->d_type != 24

        通过d_type 来判断出 文件夹 与  ” .  “   与   “  ..  ”  文件

     2.  函数: int stat(const char *path,struct stat *buf)
        作用:获取文件信息
        返回值:成功返回0,失败返回-1;
        参数:文件路径(名),structstat类型的结构体
       struct stat 结构体中有个st_mode
        S_ISREG (st_mode)==1                 表示为一般文件
        S_ISDIR (st_mode)==1                  表示为目录


版权声明:本文为weixin_61405364原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。