目录IO

目录IO

1.mkdir    创建目录文件

mkdir(const char *pathname, mode_t mode);

         (文件路径,文件的权限)

成功返回  0 
失败返回  -1 

r: 目录中是否能够查看文件
w: 目录中是否能够新建文件
x: 目录是否能够进入

2.rmdir   删除空目录文件

 rmdir(const char *pathname);

        (文件路径)

成功返回0 
失败返回-1 

3.1opendir    打开目录获得目录流指针

DIR *dp = NULL;

dp = opendir("m");           【目录必须是一个文件夹】,

成功返回   目录流指针
失败返回   NULL

3.2closedir  关闭目录流指针

closedir(dp);

5.readdir  从目录流中读取下一个目录项的结构体信息

struct dirent *pp = NULL; 

pp = readdir(dp);     【readdir必须用dirent 的结构体去接,因为读出来的是目录里的一个个文件,】

成功返回                   包含目录项信息的空间首地址
失败返回                   NULL

读到文件末尾返回    NULL

struct dirent {
            ino_t          d_ino;       /* Inode number */
            off_t          d_off;       /* Not an offset; see below */
            unsigned short d_reclen;    /* Length of this record */
            unsigned char  d_type;      /* Type of file; not supported by all filesystem types */
            char           d_name[256]; /* Null-terminated filename */
                    };

6.chdir  切换当前代码的工作路径

chdir(const char *path);

7.getcwd  获得当前目录的绝对路径

getcwd(tmpbuff, sizeof(tmpbuff));

8.access  检测调用函数的程序对文件是否拥有指定权限

access(文件路径, mode);

 mode:
            R_OK    检测是否拥有读权限
            W_OK    检测是否拥有写权限
            X_OK    检测是否拥有执行权限
            F_OK    检测文件是否存在

有该权限返回  0
出错返回        -1

时间的获取

1. time   返回1970-1-1到现在的秒数(格林威治时间)

time_t = t;

time(&t);                                       【将此时的时间以秒为单位写入t中,此处应取t的地址】

成功返回秒数
失败返回-1 

2. localtime   将秒数转换为本地时间

struct tm * tm = NULL;                     【此时的结构体tm中,含有具体年月日,时分秒,用于接收】

tm = localtime(&t);                【括号中应指向t的地址】

  struct tm {
            int tm_sec;    /* Seconds (0-60) */
            int tm_min;    /* Minutes (0-59) */
            int tm_hour;   /* Hours (0-23) */
            int tm_mday;   /* Day of the month (1-31) */
            int tm_mon;    /* Month (0-11) */
            int tm_year;   /* Year - 1900 */
            int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
            int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
            int tm_isdst;  /* Daylight saving time */
        };

成功返回结构体时间
失败返回NULL

3.mktime

mktime(tm);

 将本地时间转换为秒数

文件属性和权限的获取:

1.stat    将pathname对应的文件信息放入statbuf中

struct star buf ;

int ret = 0

ret = stat(arvg[1],&buf);

      (文件路径字符串的首地址,存放文件信息空间的首地址)

 struct stat {
        dev_t     st_dev;         /* ID of device containing file */
        ino_t     st_ino;         /* Inode number */
        mode_t    st_mode;        /* File type and mode */
        nlink_t   st_nlink;       /* Number of hard links */
        uid_t     st_uid;         /* User ID of owner */
        gid_t     st_gid;         /* Group ID of owner */
        dev_t     st_rdev;        /* Device ID (if special file) */
        off_t     st_size;        /* Total size, in bytes */
        blksize_t st_blksize;     /* Block size for filesystem I/O */
        blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */

        /* Since Linux 2.6, the kernel supports nanosecond
            precision for the following timestamp fields.
            For the details before Linux 2.6, see NOTES. */

        struct timespec st_atim;  /* Time of last access */
        struct timespec st_mtim;  /* Time of last modification */
        struct timespec st_ctim;  /* Time of last status change */

    #define st_atime st_atim.tv_sec      /* Backward compatibility */
    #define st_mtime st_mtim.tv_sec
    #define st_ctime st_ctim.tv_sec
    };

成功返回0 
失败返回-1 

【注意:stat 调用S_IFLNK时 会直接得到该文件指向的文件中,此时需要用lstat,得到该文件】

2.1 getpwuid   通过UID获得对应的用户信息

struct passwd *pwd = NULL;                 【此处要接对应st_uid库中的一整个信息,要用结构体】

pwd = getpwuid(buf.st_uid);                  【拿出buf里 的 st_uid,  库中一一对应,得到对应的用户信息】

 struct passwd {
        char   *pw_name;       /* username */
        char   *pw_passwd;     /* user password */
        uid_t   pw_uid;        /* user ID */
        gid_t   pw_gid;        /* group ID */
        char   *pw_gecos;      /* user information */
        char   *pw_dir;        /* home directory */
        char   *pw_shell;      /* shell program */
    };
 

成功返回   包含用户信息的结构体
失败返回    NULL

2.2.getgrgid  通过组ID获得组信息

struct group * grp = NULL;

grp = getgrgid(gid_t gid);

    struct group {
        char   *gr_name;        /* group name */
        char   *gr_passwd;      /* group password */
        gid_t   gr_gid;         /* group ID */
        char  **gr_mem;         /* NULL-terminated array of pointers
                                    to names of group members */
    };

成功返回包含组信息的结构体
失败返回NULL

3.readlink  读取连接文件本身的内容

readlink(argv[1], tmpbuff, sizeof(tmpbuff));

             (链接文件的路径,存放数据空间首地址,最大存放数据字节数)

成功返回读到字节个数
失败返回-1 

软连接和硬链接:

1.软连接(符号链接)

        通过文件名链接,所有能够看到的连接文件均为软连接文件

        ln -s file.txt a.txt 

2.硬链接

        通过文件对应的inode节点链接     

        ln file.txt b.txt 

【注意:后面的 a.txt 和 b.txt 不能存在】


    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vivado FIR Filters

Vivado合成直接从RTL中推导出乘加级联来组成FIR滤波器。这种滤波器有几种可能的实现方式;一个例子是收缩滤波器在7系列DSP48E1 Slice用户指南(UG479)中进行了描述,并在8抽头偶数中显示对称收缩FIR(Verilog)…

2.20 Qt day1

一. 思维导图 二. 消化常用类的使用&#xff0c;以及常用成员函数对应的功能 按钮类QPushButton&#xff1a; mywidget.h&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include<QPushButton>//按钮类 #include<QIcon>class MyW…

springboot+vue项目基础开发(17)路由使用

路由 在前端中,路由指的是根据不同的访问路径,展示不同的内容 vue Router的vue.js的官方路由 安装vue Router 再启动 在src下面新建router文件,创建index.js 代码 import {createRouter,createWebHashHistory} from vue-router //导入组件 import Login from @/views/Log…

六轴陀螺仪在游戏手柄中的应用及中国市场展望

随着电子竞技的兴起和虚拟现实技术的发展&#xff0c;游戏手柄作为重要的交互设备&#xff0c;其性能和功能日益受到重视。六轴陀螺仪作为一种高精度的运动传感器&#xff0c;其在游戏手柄中的应用&#xff0c;不仅提升了用户的游戏体验&#xff0c;也为游戏手柄市场带来了新的…

Kubernetes kubeadm 证书到期,更新证书

1.环境说明 lient Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.6", GitCommit:"fbf646b339dc52336b55d8ec85c181981b86331a", GitTreeState:"clean", BuildDate:"2020-12-18T12:09:30Z", G…

智慧水利数字孪生可视化,满屏黑科技!A3D引擎支持,免费即可搭建

2024年1月&#xff0c;在北京召开的全国水利工作会议&#xff0c;强调了要大力推进数字孪生水利建设&#xff0c;全面提升水利监测感知能力。 除此之外&#xff0c;2035年远景目标也提出&#xff1a;构建智慧水利体系&#xff0c;以流域为单元提升水情测报和智能调度能力。《数…

Open CASCADE学习|为什么由Edge生成Wire不成功?

Wire 是一种复合形状&#xff0c;不是由几何形状构建的&#xff0c;而是由边缘的装配构建的。BRepBuilderAPI_MakeWire类可以从一个或多个Edge构建Wire&#xff0c;或将新Edge连接到现有Wire。 BRepBuilderAPI_MakeWire 类将Edge连接到Wire。添加新Edge时&#xff0c;如果其顶点…

安卓OpenGL添加水印并录制(二)---抖音录制原理

文章目录 前文回顾音频处理留个小思考总结 本文首发地址 https://h89.cn/archives/146.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 源码地址: Gitee: OpenGLRecorder 通过 前文 我们知道了如何采集 Camera 视频&#xff0c;叠加水印、贴纸保存为MP4&#xff0c;…

Vue3 学习笔记(Day1)

「写在前面」 本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 Vue3 简介 2 创建 Vue3 工程 2.1 基于 vue-cli 创建 2.2 基于 vite 创建&#xff08;推荐&#xff09; 2.3 …

Web3探索加密世界:什么是空投?

随着加密货币行业的迅速发展&#xff0c;人们开始听说各种各样的术语&#xff0c;其中包括"空投"&#xff08;Airdrop&#xff09;。在这里&#xff0c;我们将深入探讨什么是空投&#xff0c;以及它在加密世界中扮演的角色。 什么是空投&#xff1f; 空投是指在加密…

视频生成模型:构建虚拟世界的模拟器 [译]

原文&#xff1a;Video generation models as world simulators 我们致力于在视频数据上开展生成模型的大规模训练。具体来说&#xff0c;我们针对不同时长、分辨率和宽高比的视频及图像&#xff0c;联合训练了基于文本条件的扩散模型。我们采用了一种 Transformer 架构&#…

C# OpenCvSharp DNN Image Retouching

目录 介绍 模型 项目 效果 代码 下载 C# OpenCvSharp DNN Image Retouching 介绍 github地址&#xff1a;https://github.com/hejingwenhejingwen/CSRNet (ECCV 2020) Conditional Sequential Modulation for Efficient Global Image Retouching 模型 Model Properti…

信号系统之连续信号处理

1 Delta 函数 连续信号可以分解为缩放和移位的增量函数&#xff0c;就像处理离散信号一样。不同之处在于&#xff0c;连续 delta 函数比其离散函数复杂得多&#xff0c;在数学上也抽象得多。我们不是用它是什么来定义连续 delta 函数&#xff0c;而是用它所具有的特征来定义它…

汽车电子论文学习---电动汽车用高功率密度碳化硅电机控制器研究

关键重点&#xff1a; sic的特点&#xff1a;耐压高、开关速度快、开关损耗小&#xff1b;采用sic的控制器&#xff0c;损耗降低70%&#xff0c;续航里程提高5%。sic的模块并联设计难度高于IGBT模块&#xff1b;多芯片并联导致热耦合问题、温升不均&#xff0c;导致部分芯片率…

猫毛过敏不能养猫了吗?除猫毛好的宠物空气净化器品牌有哪些?

让我们来探讨一下如何让容易过敏的家庭成员和猫咪更好地相处。很多人喜欢猫咪&#xff0c;但与它们相处一段时间后&#xff0c;可能会出现鼻塞、喷嚏和眼泪不断的过敏症状。那么&#xff0c;为什么会过敏呢&#xff1f;这是因为猫的唾液中含有Fel d1蛋白质&#xff0c;当它们舔…

匠芯创ArtInChip D133CBS芯片:为工业HMI产品提供强大动力与稳健防护的理想之选

引言 当今工业自动化领域&#xff0c;对于高性能和可靠性的需求日益增长。为了满足这些要求&#xff0c;匠芯创ArtInChip推出了全新的D133CBS芯片&#xff0c;它以其卓越的性能和强大的功能&#xff0c;被设计用作工业人机界面&#xff08;HMI&#xff09;产品的主控制器。 D1…

URL、DNS过滤,AV---防火墙综合实验

拓扑图 该实验之前的配置请看我的上一篇博客&#xff0c;这里仅配置URL、DNS过滤&#xff0c;AV 需求 8&#xff0c;分公司内部的客户端可以通过域名访问到内部的服务器 这次的拓扑图在外网多增加了一个DNS服务器和HTTP服务器 DNS服务器IP&#xff1a;40.0.0.30 HTTP服务器…

Java 位运算

基本概念 1、当前常见的 CPU 位数是 32 位和 64 位&#xff0c;所谓 32 位处理器就是一次只能处理 32 位&#xff0c;也就是 4 个字节的数据&#xff0c;而 64 位处理器一次则能处理 64 位&#xff0c;即 8 个字节的数据。关于 64 位处理器 、32 和 64 位含义 、32 和 64 位区…

读懂parallel gc log

Java8 ,HotspotVM, 核心参数&#xff1a; CommandLine flags: -XX:AlwaysPreTouch -XX:CompressedClassSpaceSize528482304 -XX:ErrorFile/app/logs/my-biz/hs_err_%p.log -XX:GCLogFileSize1048576000 -XX:HeapDumpBeforeFullGC 【因为是测试环境&#xff0c;所以加了这个参…

如何创建WordPress付款表单(简单方法)

您是否正在寻找一种简单的方法来创建付款功能WordPress表单&#xff1f; 小企业主通常需要创建一种简单的方法来在其网站上接受付款&#xff0c;而无需设置复杂的购物车。简单的付款表格使您可以轻松接受自定义付款金额、设置定期付款并收集自定义详细信息。 在本文中&#x…