创建和删除目录( mkdir函数 和 rmdir函数 )

article/2025/9/23 6:50:16

文章目录

  • 前言
  • 一、目录存储形式
  • 二、创建和删除目录
    • mkdir 函数
    • rmdir 函数


前言

目录(文件夹)在 Linux 系统也是一种文件,是一种特殊文件,同样可以使用前面给大家介绍 open、read 等这些系统调用以及 C 库函数对其进行操作,但是目录作为一种特殊文件,并不适合使用前面介绍的文件 I/O 方式进行读写等操作。在 Linux 系统下,会有一些专门的系统调用或 C 库函数用于对文件夹进行操作,譬如:打开、创建文件夹、删除文件夹、读取文件夹以及遍历文件夹中的文件等,那么本小节将介绍目录相关的知识内容。

一、目录存储形式

前面有给大家介绍了普通文件的管理形式或存储形式,本节介绍目录这种特殊文件在文件系统中的存储形式,其实目录在文件系统中的存储方式与常规文件类似,常规文件包括了 inode 节点以及文件内容数据存储块(block);但对于目录来说,其存储形式则是由 inode 节点和目录块所构成,目录块当中记录了有哪些文件组织在这个目录下,记录它们的文件名以及对应的 inode 编号。其存储形式如下图所示:
在这里插入图片描述

目录块当中有多个目录项(或叫目录条目),每一个目录项(或目录条目)都会对应到该目录下的某一个文件,目录项当中记录了该文件的文件名以及它的 inode 节点编号,所以通过目录的目录块便可以遍历找到该目录下的所有文件以及所对应的 inode 节点。

所以对此总结如下:
⚫ 普通文件由 inode 节点和数据块构成
⚫ 目录由 inode 节点和目录块构成

二、创建和删除目录

使用 open 函数可以创建一个普通文件,但不能用于创建目录文件,在 Linux 系统下,提供了专门用于创建目录 mkdir()以及删除目录 rmdir 相关的系统调用。

mkdir 函数

函数原型如下所示:

#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);

函数参数和返回值含义如下:
pathname:需要创建的目录路径。
mode:新建目录的权限设置,设置方式与 open 函数的 mode 参数一样,最终权限为(mode & ~umask)。
返回值:成功返回 0;失败将返回-1,并会设置 errno。

pathname 参数指定的新建目录的路径,该路径名可以是相对路径,也可以是绝对路径,若指定的路径名已经存在,则调用 mkdir()将会失败。
mode 参数指定了新目录的权限,目录拥有与普通文件相同的权限位,但是其表示的含义与普通文件却有不同。

mkdir() 使用示例

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>int main(void) 
{int ret;ret = mkdir("./new_dir", S_IRWXU | S_IRGRP | S_IXGRP |S_IROTH | S_IXOTH);if (-1 == ret) {perror("mkdir error");exit(-1);}exit(0);
}

上述代码中,通过 mkdir 函数在当前目录下创建了一个目录 new_dir,并将其权限设置为 0755(八进制)。

rmdir 函数

rmdir()用于删除一个目录

#include <unistd.h>
int rmdir(const char *pathname);

首先,使用该函数需要包含头文件<unistd.h>。
函数参数和返回值含义如下:
pathname:需要删除的目录对应的路径名,并且该目录必须是一个空目录,也就是该目录下只有.和…这两个目录项;pathname 指定的路径名不能是软链接文件,即使该链接文件指向了一个空目录。
返回值:成功返回 0;失败将返回-1,并会设置 errno。

rmdir() 使用示例

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>int main(void) 
{int ret;ret = rmdir("./new_dir");if (-1 == ret) {perror("rmdir error");exit(-1);}exit(0);
}

http://chatgpt.dhexx.cn/article/SnHeTRFb.shtml

相关文章

蓝队-ELK日志分析系统Yara规则写入

因为经常使用的是window&#xff0c;所以就用window操作系统直接搭建 需要到Elasticsearch、Logstash、kibana官网下载&#xff0c;且必须版本都一致&#xff0c;本次我使用的是7.6.1版本 Elasticsearch:用于存储收集到的日志信息&#xff1b; Logstash:用于收集日志转发给Ela…

linux 静态编译 yara

最近有个需求&#xff0c;要在go中调用yara&#xff0c;发现官方的go-yara跨平台做的不是很好&#xff0c;于是决定在go中直接调用外部yara程序&#xff0c;这样只需要写一份代码在windows和linux上都能用了。 发现官方只提供了windows的发布程序&#xff0c;linux需要自行编译…

Yara引擎编译和发布

我们自己设计软件时有很多情况都需要集成yara引擎 项目-管理NuGet程序包&#xff0c;下载几个包并安装 确保是git上最新代码即可编译 package目录下的include和lib是自动添加到项目中的。 发布时要注意除了yara编译需要依赖的jansson、libcrypto、libssl这几个库&#xff0…

使用yara分析

有时碰到大批量的样本&#xff0c;又发现其中很多相似点&#xff0c;这个时候就需要模式匹配了&#xff0c;yara在分析中当之无愧。 具体的yara规则是怎么回事&#xff0c;freebuff上有相关的文章&#xff0c;要不然看文档也是可以的。这里只记录我第一次使用的几个步骤。 &…

Yara规则编写

YARA规则的标识符类似于C语言结构&#xff0c;其规则声明以rule标识&#xff0c;在规则描述中可以包括字母、数字甚至下划线字符&#xff0c;但字符串第一个字符不能是数字&#xff0c;且单条描述不能超过128个字符。 Yara关键字 YARA规则由字符串区域和条件区域两部分组成&…

Yara规则以及yargen工具总结

Yara规则以及yargen工具总结 任务目标 yara规则&#xff1b;使用yargen对webshell生成yara规则;使用yara对目标文件进行扫描。 任务一&#xff1a;yara规则 yara规则&#xff1a; 首先我从yara规则的结构出发&#xff0c;yara规则分为两部分&#xff1a;字符串定义和条件表…

Yara安装及python运用

Yara YARA是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具&#xff0c;使用YARA可以基于文本或二进制模式创建恶意软件家族描述与匹配信息。现在已经被多家公司所运用于自身的产品。 YARA-规则 YARA规则的字符串有三种类型&#xff1a;文本字符串、十六进制…

[IDAPython] no module name ‘yara‘

继续当配环境博主 问题 在装IDA插件, 比如findcrypt的时候如果IDApython环境缺少需要的包会报错 ModuleNotFoundError: No module named yara还有类似的 ModuleNotFoundError: No module named keystone ...等等 解决 在path/to/IDA/python目录下打开cmd或者powershell, 使…

yara规则--构建yara规则库

零、快速构建yara规则库的方案 Yara官方预置的规则库&#xff0c;链接 https://github.com/Yara-Rules/rules ClamAV的特征码转换为yara规则&#xff0c;利用工具clamav_to_yara.py将clamav的特征码转换为yara规则 从yara-generator爬取别人上传的样本的规则 利用 yarGen工具 …

yara规则--编写

编写 YARA 规则 — yara 4.2.0 文档 YARA规则易于编写和理解&#xff0c;并且它们的语法是 类似于 C 语言。这是您可以编写的最简单的规则 YARA&#xff0c;它什么都不做&#xff1a; rule dummy {condition:false } 一、规则标识符 每个规则都以关键字“ rule”开头&#xff0…

静态扫描之Yara第一话--安装及使用Yara

Yara安装及使用 概述 Yara是一款用于识别恶意软件及对其行为进行分类的安全利器。Yara会根据我们自己编写的yara规则&#xff0c;来对可疑软件进行一个模式匹配&#xff0c;若可疑软件中的一些特征与我们的yara规则匹配上了&#xff0c;则可以初步认定可疑软件为恶意软件。 项…

IDA报错No module named ‘yara‘

问题描述 D:\CTFTools\Reverse\IDA\ida77\plugins\findcrypt3.py: No module named yara Traceback (most recent call last):File "D:\CTFTools\Reverse\IDA\ida77\python\3\ida_idaapi.py", line 580, in IDAPython_ExecScriptexec(code, g)File "D:/CTFTool…

CentOS7下安装yara

Linux之yara的安装和使用 前言一、前置安装包1.安装automake2.安装libtool3.其余包4.SecureCRT 二、安装yara总结 前言 提示&#xff1a;本文将简述在centos下安装yara的方法&#xff1a; 一、前置安装包 在安装yara之前请先确定你的系统中是否已经安装automake&#xff0c;l…

使用 OSquery 和 YARA 进行审计

Part 1: osquery 简介 osquery是适用于 Windows、OSX、Linux 和 FreeBSD 的操作系统工具框架。这些工具使低级操作系统分析和监控既高效又直观。 osquery中的SQL表表示抽象概念&#xff0c;例如运行进程、加载的内核模块、开放式网络连接、浏览器插件、硬件事件或文件哈希。…

yara 实验

yara 实验 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 什么是 yara YARA 是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具&#xff0c;使用 YARA 可以基于文本或二进制模式创建恶意软件家族…

yara 分析器

1.下载源码 wget https://github.com/VirusTotal/yara/archive/refs/tags/v4.2.3.tar.gz 2.预编译 tar -zxf yara-4.2.0.tar.gz cd yara-4.2.0 ./bootstrap.shyum -y install automake libtool make gcc pkg-config yum -y flex bison 3.编译与安装 ./bootstrap.sh ./conf…

yara安装与使用

yara安装与使用 环境及安装工具使用yara规则编写strings部分转义大小写字符集表示匹配单个词组文本字符串 condition部分infilesizeatentrypointint8/16/32、uint8/16/32of??&#xff1f;[X-Y]them/($*)!for xxx of xxx &#xff1a;(xxx)for xxx i in (xxx) &#xff1a;(xx…

yara规则初识

一、YARA介绍 YARA 是一个免费开源工具&#xff0c;旨在帮助安全人员检测和分类恶意软件&#xff0c;但它不应仅限于这一种用途。YARA规则还可以帮助检测特定文件或您可能想要检测的任何内容。目前使用YARA 的知名软件有赛门铁克、火眼、卡巴斯基、VirusTotal、安天等。 YARA的…

Yara规则概述

一、Yara概述 YARA是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具&#xff08;由virustotal的软件工程师Victor M. Alvarezk开发&#xff09;&#xff0c;使用YARA可以基于文本或二进制模式创建恶意软件家族描述信息&#xff0c;当然也可以是其他匹配信息。…

这五个资源超多的资源网站 请务必珍藏起来

现在很多人都会在网上找资源&#xff0c;如今互联网的快速发展也让大家找起资源来非常的容易&#xff0c;只要有好的资源网站&#xff0c;就不怕没有找不到的资源。而今天我和大家分享的就是几个资源超多的网站&#xff0c;希望你们不再缺少资源。 1、落花网 这个就很厉害了&…