134 Linux 系统编程11 ,readlink命令,文件目录rwx权限差异,目录操作函数

一  readlink 命令

前面知道,如果a.soft是一个软链接,我们使用 cat a.soft,会直接查看这个软链接指向的文件

那么我们就是想看这个软链接是啥,可以使用 readlink a.soft

二 获取工作目录 getcwd函数

获取进程当前工作目录 (卷3,标库函数)

size 为buf 的大小。

char *getcwd(char *buf, size_t size); 成功:buf中保存当前进程工作目录位置。失败返回NULL。

成功则 将buf中的数据 作为返回值返回;也就是说,在成功的情况下,返回值和buf中的值是一样的。

失败,则返回 NULL,一般当size 不够大,放不下的时候,就会返回null

三 改变当前进程的工作目录

改变当前进程的工作目录

int chdir(const char *path); 成功:0;失败:-1设置errno为相应值

int main() {char nowpath[128];getcwd(nowpath,sizeof(nowpath));cout << "nowpath = " <<nowpath <<  endl;int ret  = chdir("/home/hunandede/projects/linuxcpp/aaa");// aaa 目录是真实存在的 ret =0//int ret = chdir("/home/hunandede/projects/linuxcpp/bbb");//bbb目录不存在, ret=-1//另一个问题是 chdir虽然成功了,但是意义在哪里,这个当前文件肯定是指的 可执行文件的路径了,改变目录也不会将 执行文件 拷贝到 aaa目录cout << "ret = " << ret << endl;getcwd(nowpath, sizeof(nowpath));cout << "nowpath = " << nowpath << endl;return 0;
}

四。文件,目录权限

注意:目录文件也是“文件”。其文件内容是该目录下所有子文件的目录项dentry。 可以尝试用vim打开一个目录。

文件 和 目录 的 RWX的权限 ,对应的操作也不同

r

w

x

文件

文件的内容可以被查看

内容可以被修改

可以运行产生一个进程

cat、more、less…

vi、> …

./文件名

目录

目录可以被浏览

创建、删除、修改文件

可以被打开、进入

ls、tree…

mv、touch、mkdir…

cd

目录设置黏住位:若有w权限,创建不变,删除、修改只能由root、目录所有者、文件所有者操作。

opendir函数

根据传入的目录名打开一个目录 (库函数) DIR * 类似于 FILE *

DIR *opendir(const char *name);   成功返回指向该目录结构体指针,失败返回NULL

    参数支持相对路径、绝对路径两种方式:例如:打开当前目录:① getcwd() , opendir() ② opendir(".");

closedir函数

关闭打开的目录

int closedir(DIR *dirp); 成功:0;失败:-1设置errno为相应值

readdir函数

读取目录 (库函数)

struct dirent *readdir(DIR *dirp);  成功返回目录项结构体指针;失败返回NULL设置errno为相应值

需注意返回值,读取数据结束时也返回NULL值,所以应借助errno进一步加以区分。

struct 结构体:

           struct dirent {

               ino_t          d_ino;      inode编号

               off_t          d_off;       

               unsigned short  d_reclen;    文件名有效长度

               unsigned char   d_type;     类型(vim打开看到的类似@*/等)

               char          d_name[256];文件名

           };

其成员变量重点记忆两个:d_ino、d_name。实际应用中只使用到d_name。

练习1:实现简单的ls功能。 【imp_ls.c】

练习2:实现ls不打印隐藏文件。每5个文件换一个行显示。 【imp_ls2.c】

拓展1:实现ls -a -l 功能。

拓展2:统计目录及其子目录中的普通文件的个数

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

《艾尔登法环 黄金树幽影》是什么?Mac电脑怎么玩《艾尔登法环》艾尔登法环下载

全体起立&#xff0c;《艾尔登法环 》最新DLC《黄金树幽影》将在6月21日发布&#xff0c;steam售价198元&#xff0c;现在就可以预订了。宫崎英高在接受FAMI通的采访时表示&#xff0c;新DLC的体量远超《黑暗之魂》和《血源诅咒》资料片。好家伙&#xff0c;别人是把DLC续作&am…

Linux:Jenkins:GitLab+Maven+Jenkins的部署——离线包rpm版

Linux&#xff1a;Jenkins&#xff1a;GitLabMavenJenkins的部署&#xff08;1&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136157018?spm1001.2014.3001.5501这个是原版文章&#xff0c;均是使用的在线情况&#xff0c;但是不排除会有离线部署&am…

eclipse中open Type 、 open type in Hierachy、open Resource的区别

目录 场景&#xff1a; open Type open Resource open type in Hierachy 场景&#xff1a; 在项目中想要研究底层代码&#xff0c;经常要用eclipse看依赖jar包的类&#xff0c;比如spring的源码中AbstractApplicationContext类CTLSHIFTT用的少&#xff0c;经常用的CTLSHIR…

[SUCTF 2019]EasySQL1 题目分析与详解

一、题目介绍 1、题目来源&#xff1a; BUUCTF网站&#xff0c;网址&#xff1a;https://buuoj.cn/challenges 2、题目描述&#xff1a; 通过以上信息&#xff0c;拿到flag。 二、解题思路 首先打开靶机&#xff0c;尝试输入1查看回显&#xff0c;回显如图所示&#xff1a;…

前端工程化面试题 | 15.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【奥威-金蝶云星空BI方案】你要的报表,这里都有!

用金蝶云星空来记账&#xff0c;那确实好&#xff0c;但如果让你再去做一份详细的报表呢&#xff1f;自己开发的话&#xff0c;成本大、耗时长&#xff0c;一旦有了新的需求又要一再开发&#xff0c;长此以往将增加使用者使用难度&#xff0c;降低数据分析对运营决策的时效性。…

网络原理TCP之“三次握手“

TCP内核中的建立连接 众所周知,TCP是有连接的. 当我们在客户端敲出socket new Socket(serverIp,severPort)时,就在系统内核就在建立连接 真正建立连接是在系统内核中建立的,我们程序员只是调用相关的api. 在此处,我们把TCP的建立连接称为三次握手. 系统在内核建立连接时如上…

Spring事务失效场景

【事务的回滚仅仅对于unchecked的异常有效。对于checked异常无效。也就是说事务回滚仅仅发生在&#xff0c;出现RuntimeException或Error的时候。通俗一点就是&#xff1a;代码中出现的空指针等异常&#xff0c;会被回滚。而文件读写、网络超时问题等&#xff0c;spring就没法回…

CSP-J 2023 复赛第4题:旅游巴士

【题目来源】https://www.luogu.com.cn/problem/P9751https://www.acwing.com/problem/content/description/5313/【题目描述】 小 Z 打算在国庆假期期间搭乘旅游巴士去一处他向往已久的景点旅游。 旅游景点的地图共有 n 处地点&#xff0c;在这些地点之间连有 m 条道路。 其中…

【Linux进程】进程状态---进程僵尸与孤儿

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1.进程排队2.进程状态…

高考杂志高考杂志社高考编辑部2023年第32期目录

高考论坛 高中数学课堂教学中创设有效情境的策略探究 黄进生; 3-5 核心素养为导向的高中物理教学探究 王丽萍; 6-8 高中化学“教、学、评”一体化教学模式的有效应用 陈燕; 9-11《高考》投稿&#xff1a;cn7kantougao163.com 新高考背景下高中英语阅读理解教学…

手机单目相机内参标定

使用软件&#xff1a; 参考我之前的文章&#xff1a; 软件地址:https://github.com/DavidGillsjo/VideoIMUCapture-Android/releases 棋盘标定板下载 链接: https://pan.baidu.com/s/1wiPJsEf87Vc0D7KwJnt3GA?pwd1234 提取码: 1234 过程 1.使用下载的软件录制一段视频&am…

Ps:直方图

直方图 Histogram是一个用二维坐标表示图像像素或分量值强度分布的图形。 Ps菜单&#xff1a;窗口/直方图 Window/Histogram 几乎所有的图像处理软件里都有直方图&#xff0c;大多数的相机里也内置了直方图。 ◆ ◆ ◆ 直方图的构成 直方图是一个二维坐标系统&#xff0c;横坐…

docker安装flink

docker安装flink 5.1、拉取flink镜像&#xff0c;创建网络 docker pull flink docker network create flink-network5.2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES&…

橘子学es原理01之准备工作

es本身是具备很好的使用特性的&#xff0c;我指的是他的部署方面的&#xff0c;至于后期的使用和运维那还是很一眼难尽的。 我们从这一篇开始就着重于es的一些原理性的的一些探讨&#xff0c;当然我们也会有一些操作性的&#xff0c;业务性的会分为多个栏目来写。比如前面我写的…

hbuilderx创建、运行uni-app

创建uni-app 在点击工具栏里的文件 -> 新建 -> 项目&#xff1a; 选择uni-app类型&#xff0c;输入工程名&#xff0c;选择模板&#xff0c;点击创建&#xff0c;即可成功创建。 uni-app自带的模板有 Hello uni-app &#xff0c;是官方的组件和API示例。还有一个重要模…

编码后的字符串lua

-- 长字符串 local long_string "你好你好你好你好你好你好你好你好" local encoded_string "" for i 1, #long_string do local char_code string.byte (long_string, i) encoded_string encoded_string .. char_code .. "," end encoded_…

vulnhub靶场之driftingblues-1

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email (it should be on my profile) for troubleshooting or questions. 2.靶场下载 https://www.vulnhub.…

贪婪算法入门指南

想象一下&#xff0c;你在玩一款捡金币的游戏。在这个游戏里&#xff0c;地图中散布着各种大小不一的金币&#xff0c;而你的目标就是尽可能快地收集到最多的金币。你可能会采取一个直观的策略&#xff1a;每次都去捡最近的、看起来最大的金币。这种在每一步都采取局部最优解的…

【Linux基础】Linux自动化构建工具make/makefile

背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需要后…