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 是一种通信机制,用于实现网络…...

通用游戏地图解决方案设计解析
前言: 在软件开发过程中,我们都希望能设计出一个稳健的,可维护的系统,为了实现这个目的,人们总结出了很多相关的设计原则,比如SOLID原则, KISS原则等等。SOLID每个字母代表了一种设计原则&…...

java @Autowired @Resource @Inject 三个注解的区别
javax.annotation.Resourcejdk 内置的,JSR-250 中的注解。依赖注入通过 org.springframework.context.annotation.CommonAnnotationBeanPostProcessor 来处理。org.springframework.beans.factory.annotation.Autowired org.springframework.beans.factory.annotati…...

「媒体分流直播」媒体直播和传统直播的区别,以及媒体直播的特点
传媒如春雨,润物细无声,大家好直播毋庸置疑已经融入到了我们生活的方方面面,小到才艺,游戏,大到政策的发布,许多企业和机构也越来越重视直播,那么一场活动怎么最大化的进行传播,一是…...

数据是如何在计算机中存储的
我们普通人对于数据存储的认识恐怕大多数都是从自己使用的电脑来的。现在几乎人手一台电脑,而我们的电脑存储着各种各样的文件,比如视频文件、音频文件和Word文档等。这些文件从计算机术语的角度都可以称为数据。 如图1-1所示是Windows 10 “我的电脑”的截图。通过该截图我…...

Day907.分区表 -MySQL实战
分区表 Hi,我是阿昌,今天学习记录的是关于分区表的内容。 经常被问到这样一个问题: 分区表有什么问题,为什么公司规范不让使用分区表呢? 一、分区表是什么? 为了说明分区表的组织形式,先创建…...

C++概览:工具链、基础知识、进阶及总结
本篇写给C初学者,作为概览,文中仅包含各方面基础知识,无深入分析。 C基础概念简介 C编译过程示意图 关键词:源文件、预编译、编译、汇编、链接 C工具链总结 cmake项目工程文件是一种中介工程文件,可以转化成其他…...

目标检测中回归损失函数(L1Loss,L2Loss,Smooth L1Loss,IOU,GIOU,DIOU,CIOU,EIOU,αIOU ,SIOU)
文章目录L-norm Loss 系列L1 LossL2 LossSmooth L1 LossIOU系列IOU (2016)GIOU (2019)DIOU (2020)CIOU (2020)EIOU (2022)αIOU (2021)SIOU (2022…...

JOSN数据转换和解析
文章目录JOSN数据转换和解析内容回顾Map 集合转成 JSON 字符串List 集合转换成 JSON 字符串Ajax 异步和同步异步概念同步概念异步和同步区别异步请求案例同步请求时间格式化旧时间 api 格式化格式化和解析的工具类JSTL 时间格式化JSTL 使用JOSN数据转换和解析 内容回顾 ajax …...

浅析Linux内核中进程完全公平CFS调度
一、前序 目前Linux支持三种进程调度策略,分别是SCHED_FIFO 、 SCHED_RR和SCHED_NORMAL;而Linux支持两种类型的进程,实时进程和普通进程。实时进程可以采用SCHED_FIFO 和SCHED_RR调度策略;普通进程则采用SCHED_NORMAL调度策略。从…...

安装 RustDesk 服务器 (适用 Rocky Linux, CentOS, RHEL 系列发行版)
环境:Rocky Linux 9.1 1. 安装 Docker Engine 可以参考 [[linux-docker-rocky-install]] https://cc01cc.com/2023/03/02/linux-docker-rocky-install/英文可以参考官方文档 Install Docker Engine on RHEL https://docs.docker.com/engine/install/rhel/ 2. 安装…...