Linux系统调用之目录操作函数
前言
如果,想要深入的学习Linux系统调用中mkdir,rmdir,rename,chdir,getcwd等这些有关于目录操作函数,还是需要去自己阅读Linux系统中的帮助文档。
具体输入命令:
man 2 mkdir/rmdir/rename/chdir/getcwd
即可查阅到完整的资料信息。
mkdir函数
mkdir函数是Linux系统API中的一员,它的作用是:创建一个目录
它的函数原型是长这样的:
int mkdir(const char *pathname, mode_t mode);
接下来,我来介绍一下它的两个参数与返回值
参数:pathname: 创建的目录的路径mode: 权限,八进制的数,最终你创建出来的文件权限是:mode & (~umask)返回值:成功返回0, 失败返回-1
关于Linux中权限知识不懂的同学,可以看这篇文章详解Linux文件类型与权限
在使用这个函数之前,我们需要往C/C++文件中导入这些头文件:
#include <sys/stat.h>
#include <sys/types.h>
下面用一个代码例子来演示一下mkdir函数的作用:
代码演示:创建一个目录
#include <sys/stat.h>
#include <sys/types.h>
#include <stdio.h>int main() {int ret = mkdir("aaa",0777);if(ret == -1) {perror("mkdir");return -1;}return 0;
}
查看一下创建好的文件信息
nowcoder@nowcoder:~/Linux/lession14$ ls -dl aaa
drwxrwxrwx 2 nowcoder nowcoder 4096 3月 3 22:01 aaa
顺便来讲一下这个函数的Linux命令把,使用命令创建一个目录:mkdir 目录名
rmdir函数
这个函数只能删除空目录,作用比较小,就不演示了,如果同学们想要去了解,输入命令:
man 2 rmdir
自行查看说明文档即可
对于的Linux命令可以是rmdir 空文件名
rename函数
rename函数是Linux系统API中的一员,它的作用是:
- 修改文件的名称或路径
它的函数原型是长这样的:
int rename(const char *oldpath, const char *newpath);
接下来,我来介绍一下它的两个参数与返回值
参数:oldpath: 旧的文件名(路径)newpath:新的文件名(路径)返回值:成功返回0, 失败返回-1
在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:
#include <stdio.h>
下面用一个代码例子来演示一下rename函数的作用:
代码演示,修改一个文件的名称(路径)
#include <stdio.h>int main() {int ret = rename("aaa", "bbb");if(ret == -1) {perror("rename");return -1;}return 0;
}
至此文件aaa就被修改为bbb了。
这个rename函数与Linux命令mv的作用是相同的,重命名或移动文件的位置。
chdir函数 与 getcwd函数
chdir函数
chdir函数是Linux系统API中的一员,它的作用是:修改进程的工作目录。
它的函数原型是长这样的:
int chdir(const char *path);
接下来,我来介绍一下它的参数与返回值
参数:path: 修改后的进程的工作目录返回值:成功返回0, 失败返回-1
在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:
#include <unistd.h>
getcwd函数
chdir函数是Linux系统API中的一员,它的作用是:获取当前的工作目录
它的函数原型是长这样的:
char *getcwd(char *buf, size_t size);
接下来,我来介绍一下它的参数与返回值
参数:buf: 一个传出数组,用来存储当前进程工作目录的路径。size:数组的大小返回值:进程工作目录的路径。
在使用这个函数之前,我们需要往C/C++文件中导入这个头文件:
#include <unistd.h>
现在介绍完了这两个函数,接下来让我用一个例子来展示这两个函数的用法。
代码实例:在当前工作目录下用程序在别的工作目录里生成一个文件(修改工作路径)
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>// int open(const char *pathname, int flags, mode_t mode);
// char *getcwd(char *buf, size_t size);
// int chdir(const char *path);int main()
{char buf[100];getcwd(buf, 100);printf("当前的工作路径为:%s\n", buf);int ret = chdir("../lession13");if (ret == -1){perror("chdir");return -1;}printf("将工作路径修改为:%s\n", "../lession13");int fd = open("chdir", O_CREAT | O_RDWR, 0664);if (fd == -1){perror("open");return -1;}close(fd);char buf1[100];getcwd(buf1, 100);printf("当前的工作路径为:%s\n", buf1);return 0;
}
代码输出结果为:
nowcoder@nowcoder:~/Linux/lession14$ ./chdir
当前的工作路径为:/home/nowcoder/Linux/lession14
将工作路径修改为:../lession13
当前的工作路径为:/home/nowcoder/Linux/lession13
总结
今天学习的Linux系统调用有关于目录操作的函数共有这些mkdir,rmdir,rename,chdir,getcwd。实际操作下来还是十分有意思的。
相关文章:
Linux系统调用之目录操作函数
前言 如果,想要深入的学习Linux系统调用中mkdir,rmdir,rename,chdir,getcwd等这些有关于目录操作函数,还是需要去自己阅读Linux系统中的帮助文档。 具体输入命令: man 2 mkdir/rmdir/rename/ch…...
设计模式-策略模式
前言 作为一名合格的前端开发工程师,全面的掌握面向对象的设计思想非常重要,而“设计模式”是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的,代表了面向对象设计思想的最佳实践。正如《HeadFirst设计模式》中说的一句话&…...
面试+算法:罗马数字及Excel列名与数字互相转换
概述 算法是一个程序员的核心竞争力,也是面试最重要的考查环节。 试题 判断一个罗马数字是否有效 罗马数字包含七种字符:I,V,X,L,C,D和M,如下 字符数值I1V5X10L50C100D500M1000…...
Connext DDS路由服务Routing Service(1)
1 简介 RTI路由服务是一种开箱即用的解决方案,允许开发人员快速扩展和集成不同或地理位置分散的实时系统。它跨域、LAN和WAN扩展RTI ConnextDDS应用程序,包括防火墙和NAT穿越。 它还支持DDS到DDS的桥接,允许您对数据进行转换。这允许未修改的DDS应用程序进行通信,即使它们是…...
如何使用SaleSmartly进行Facebook Messenger 营销、销售和支持
如何使用SaleSmartly(ss客服)进行Facebook Messenger 营销、销售和支持上篇文章我们讲了什么是Facebook Messenger CRM以及获得Facebook Messenger CRM的注意事项,现在你有更多时间与客户聊天,让我们看看你如何使用SaleSmartly&am…...
教资教育知识与能力中学教学
目录 3.1 教学概述 3.2 教学过程 3.3 教学原则*【简答/辨析重点】 3.4 教学方法 3.5 教学组织形式 3.6 教学工作基本环节 3.7 教学评价 3.1 教学概述 1、教学的意义【14/18辨析】 教学是传授系统知识、促进学生发展的最有效形式; 教学是学校进行全面发展教…...
IDEA中使用Tomcat的两种方式:集成本地Tomcat使用Tomcat Maven插件
一、前言 在IDEA中创建完一个Maven Web项目,并补齐了目录以后,准备使用Tomcat时,就需要在自己创建的项目中去部署Tomcat,前文已经介绍了如何创建Maven Web,所以这里就不多加赘述,直接讲述部署Tomcat的方法…...
IP 地址的简介
IP 地址 Internet 依靠 TCP/IP 协议,在全球范围内实现不同硬件结构、不同操作系统、不同网络系统的主机之间的互联。在 Internet 上,每一个节点都依靠唯一的 IP 地址相互区分和相互联系,IP 地址用于标识互联网中的每台主机的身份,…...
3D动作/动画特效
硕士/博士符合一本高校人才引进条件的硕士、博士,教研能力突出者可签合作高校正式编制本科/硕士成绩优异专业扎实、有创新思维者可在签约工作后在校继续读研读博【产业模式】数字经济→数字孪生→升级转型【细份领域】数字产业、数字工程、数字教研、数字政企【合作…...
python 多线程编程之_thread模块
_thread模块除了可以派生线程外,还提供了基本的同步数据结构,又称为锁对象(lock object,也叫原语锁、简单锁、互斥锁、互斥和二进制信号量)。 下面是常用的线程函数: 函数描述start_new_thread(function,…...
vue:vue2与vue3的区别
一、背景 vue2是指的2.X vue3是指的3.0以及更新的版本(3.2版本在script标签里可以写setup,极大的简化了开发) 本文对比两者区别。 二、官网 生命周期选项 | Vue.js API 参考 | Vue.js Vue.js - 渐进式 JavaScript 框架 | Vue.js Vue.…...
SQL数据库语法
目录 1. 常用数据类型 2. 约束 4. 数据库操作 5. 数据表操作 1. 常用数据类型 int 整型double 浮点数varchar 字符型data 年月日datetime 年月日 时分秒2. 约束 主键 primary key : 物理上存储的顺序(存在真实排序), 主键…...
人机界面艺术设计
人机界面艺术设计 2.1人机界面艺术设计思路 人们经常有意通过某种工具或创造来解决难题,然而这并不意味着人们乐于接受别人或其他事情,他们很难提出问题。在用户使用网页或软件的时候,他们有明确的目标,他们利用电脑来帮助自己达…...
【办公类-19-01-02】办公中的思考——Python,统计教职工的姓名中那些字最多?
背景需求:上一篇计算了教职工的姓氏谁最多,col[0]]这一篇统计教职工的(姓氏名字)里面哪些字出现最多。材料准备:1、下载所有员工名单写代码。py 包含”姓氏名字“的重字率统计from pandas import DataFrame, Series im…...
HCIP实验1
实验要求 1 R6为isp, 接口IP地址均为公有地址;该设备只能配置IP地址,之后不能冉对其进行其他任何配置; 2 R1-R5为局域网,私有IP地址192.168.1.0/24, 请合理分配; 3 R1, R2, R4,各有两个环回地址; R5; R6各有一个环回地址;所有路由器上环回均…...
一个Bug让人类科技倒退几十年?
大家好,我是良许。 前几天在直播的时候,问了直播间的小伙伴有没人知道「千年虫」这种神奇的「生物」的,居然没有一人能够答得上来的。 所以,今天就跟大家科普一下这个人类历史上最大的 Bug 。 1. 全世界的恐慌 一个Bug会让人类…...
2023王道考研数据结构笔记第四章串
第四章 串 4.1 串的定义 4.1.1 串的相关概念 串:即字符串(String)是由零个或多个字符组成的有限序列。一般记为S‘a1a2…an’ (n>0) 其中S是串名,单引号(注:有的地方用双引号,如Java、C&am…...
【AI绘图学习笔记】深度学习相关数学原理总结(持续更新)
如题,这是一篇深度学习相关数学原理总结文,由于深度学习中涉及到较多的概率论知识(包括随机过程,信息论,概率与统计啥啥啥的),而笔者概率知识储备属实不行,因此特意开一章来总结(大部…...
CSGO服务器配置全贴纸插件方法教程
CSGO服务器配置全贴纸插件方法教程 关于插件的警告 一定要了解V社对于CSGO社区服务器的规定,全皮肤插件/全手套插件等,在设置了GSLT的情况下,是有可能被封禁GSLT账号的(所以慎用) 配置好服务器之后呢,想安…...
Python爬虫——使用socket模块进行图片下载
Python爬虫——使用socket模块进行图片下载什么是socket爬虫的工作流程socket爬取图片为什么能用socket能下载图片socket下载图片和request下载图片的区别使用socket下载一张图片使用socket下载多张图片方法1方法2什么是socket Socket 是一种通信机制,用于实现网络…...
实时操作系统(RTOS)核心特性与工业实践解析
1. 实时操作系统核心特性解析实时操作系统(RTOS)的核心设计理念在于"确定性响应",这与我们日常使用的通用操作系统有着本质区别。我曾参与过工业控制系统的开发,深刻体会到RTOS在关键任务场景下的不可替代性。以数控机床…...
Google AI Agent白皮书爆了!读懂它,面试大厂SDE/MLE轻松拿Offer!
Google新发布的AI Agent白皮书,深入解析了生成式AI的核心机制、组成结构及应用潜力,并介绍了LangChain的实现方法。该白皮书适合CS留学生,尤其是AI、机器学习或智能系统开发兴趣者,对提升AI系统架构理解、掌握智能体分级体系及技术…...
多层PCB结构与过孔工艺深度解析
1. 多层PCB内部结构探秘作为一名硬件工程师,第一次拆解十层PCB板时,那种震撼感至今难忘。密密麻麻的过孔像微型蚁穴般贯穿板体,各层铜箔线路在灯光下泛着金属光泽。本文将用3D视角为你拆解这块"电子千层糕"的构造奥秘。多层PCB的核…...
Phantom Stealer 凭证窃取机制分析与防御体系研究
摘要 Phantom Stealer 作为 2025 年下半年出现的新型多功能信息窃取木马,以多阶段感染、无文件驻留、强反检测与全维度凭证窃取为核心特征,通过伪装合法软件、脚本混淆、进程注入、 Heaven’s Gate 技术规避等手段,精准窃取浏览器密码、Cooki…...
ARCMAP实战:3分钟搞定面数据200米内点筛选(附反向选择技巧)
ARCMAP空间筛选实战:200米范围点数据高效提取与反向选择技巧 在地理信息系统(GIS)日常工作中,空间数据筛选是最基础却最频繁的操作之一。许多初学者面对"筛选某面要素200米范围内的点数据"这类需求时,往往会…...
突破模型部署瓶颈:TimesFM 2.5从500M到200M的压缩实践指南
突破模型部署瓶颈:TimesFM 2.5从500M到200M的压缩实践指南 【免费下载链接】timesfm TimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting. 项目地址: https://gitc…...
数字化转型深水区:技术从“支撑”到“驱动”的蜕变
对于身处一线的软件测试从业者而言,“数字化转型”早已不是一个陌生的词汇。我们经历了从手工测试到自动化测试的转变,见证了敏捷与DevOps带来的流程革新。然而,当转型浪潮进入“深水区”,一种更为根本的变革正在发生:…...
解决WPS标题编号不从‘一‘开始的烦恼:新手必看避坑指南
WPS标题编号异常全解析:从问题根源到高阶应用技巧 刚接触WPS文字处理的新手们,经常会遇到一个令人困惑的现象——文档中的标题编号莫名其妙地从"二"或"三"开始,而不是预期的"一"。这种情况不仅影响文档美观&am…...
8元和3元的降AI工具差在哪用数据说话
降AI率工具市场里,价格跨度很大:有3元/千字的,有8元/千字的,差了2.5倍。 很多同学的第一反应是"贵的肯定好",但这个逻辑在降AI工具领域不一定成立。这篇文章用实测数据说话,对比比话降AI&#x…...
Spring Boot 3.x面试全攻略:自动配置+事务+AOT,2026最新考点
文章目录一、开场:Spring Boot面试,你真的准备好了吗?二、自动配置:从"黑魔法"到"透明厨房"2.1 面试第一问:自动配置到底咋实现的?2.2 3.5版本新考点:TaskExecutor名称变更…...
