[代码实例][Linux系统编程]相对路径转绝对路径

Linux 中的绝对路径与相对路径:有什么区别? 路径是 Linux 中最重要的概念之一,这是每个 Linux 用户都必须知道的。 路径是您引用文件和目录的方式,它给出了文件或目录在 Linux 目录结构中的位置,它由名称和斜杠语法组成。 /home/abhishek/scripts 作为用户,当您想要访问某个文件或目录或必须将文件或目录的位置提供给命令或脚本时,您必须使用路径。 cat /home/abhishek/scripts/my_script.sh 请记住,如果路径以斜杠“/”开头,则第一个斜杠表示根,路径中的其余斜杠只是分隔符。初学者经常混 阅读详情
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <unistd.h>
#include <limits.h>

#define MIN(x,y)    (((x) < (y)) ? (x) : (y))

char * rpath_to_apath(const char * rpath, char * buf, int buf_size);

int main(int argc, char * argv[])
{
    char * rpath = NULL;
    char * apath = NULL;

    if((argc == 2 && strcmp(argv[1], "--help") == 0)
        || argc > 2)
    {
        printf("Usage: %s <relative_path>\n", argv[0]);
        return EXIT_SUCCESS;
    }

    if(argc == 1)
        rpath = "./";
    else
        rpath = argv[1];

    if(rpath[0] == '/')
    {
        fprintf(stderr, "path must be relative path!\n");
        return EXIT_FAILURE;
    }
    printf("relative path: %s\n", rpath);

    if((apath = malloc(PATH_MAX)) == NULL)
    {
        perror("malloc");
        return EXIT_FAILURE;
    }
    memset(apath, 0, PATH_MAX);

    printf("absolute path: %s\n", rpath_to_apath(rpath, apath, PATH_MAX));
    free(apath);

    return EXIT_SUCCESS;
}

char * rpath_to_apath(const char * rpath, char * buf, int buf_size)
{
    char cur_work_dir[PATH_MAX] = {0};
    int index = 0;
    const char * p = rpath;

    while(*p == '.')
        p++;
    if(*p == '/')
        p++;

    if(getcwd(cur_work_dir, PATH_MAX) == NULL)
    {
        perror("getcwd");
        return NULL;
    }

    index = strlen(strncpy(buf, cur_work_dir, buf_size - 1));
    if(*p)
    {
        buf[index] = '/';
        strncpy(buf + index + 1, p,
                MIN(strlen(p), (buf_size - 1) - (index + 1)));
    }

    return buf;
}

这段代码仅仅是实现相对路径和绝对路径之间的转换,但其中存在一个BUG:代码严重依赖于当前工作目录。
正确的做法是调用系统调用realpath():

#include <stdlib.h>
char * realpath(const char * pathname, char * resolved_path);
Nginx健康检查实战:如何用第三方模块提升服务可用性(附详细配置) 本文深入探讨了如何通过集成第三方健康检查模块来提升Nginx的服务可用性。文章对比了Nginx默认被动检查的局限性,并详细介绍了主动健康检查的核心优势、主流模块选型,以及以nginx_upstream_check_module为例的实战部署与配置指南,帮助运维人员构建更可靠的负载均衡架构。 阅读详情

相关推荐

【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘

虚拟化平台安装好之后,一般情况下,只有一个硬盘在工作,其他的外接硬盘(我的只有一个ssd硬盘,其他的均是usb外接,SATA接口的硬盘是否这样我暂时不清楚哈)没有在工作,但是一个硬盘明显不够我们使用的,所以我们需要去挂载外接的硬盘来扩容。...

Rubik Blog 4834

相对路径、绝对路径互相转换

路径(path)的表示方法:unix和linux中为/(正斜杠),windows中为\(反斜杠)。相对路径两者都可以 1).\system32\.exe 一个 .表示当前目录(相对路径以当前在编辑的文档为出发点) 2)..\表示父目录 3)../../表示根目录 ...

qinzheng_chen的博客 3197

基于Claude AI的Dex个人操作系统:从零部署到高效工作流实战

在当今信息过载的时代,个人知识管理(PKM)和任务自动化成为提升效率的关键技术。传统PKM工具如Notion、Obsidian虽然提供了强大的信息存储能力,但本质上是被动的数据库,需要用户手动维护结构和链接,容易形成信息孤岛。其核心原理在于通过预设的文件夹结构和智能路由,实现信息的自动归类与关联。这种自动化同步机制的技术价值在于彻底消除重复劳动和决策疲劳,让用户从繁琐的信息整理中解放出来,专注于高价值思考。在实际应用场景中,它尤其适合需要处理大量会议、任务和人际关系的知识工作者,如产品经理、项目经理和团队领

weixin_42521558的博客 377

Linux 相对路径转化为绝对路径 C语言 (realpath函数)

如果resolved_path为NULL,则该函数调用malloc分配一块大小为PATH_MAX的内存来存放解析出来的绝对路径,并返回指向这块区域的指针。事实上,我的代码中第一种用法absPath很有可能会越界,如果传入的第二参数 resolved 非 null 指针,一定要保证有足够的空间存放格式化的地址,可以使用PATH_MAX宏。将参数path所指的相对路径转换成绝对路径后存于参数resolved_path所指的字符串数组或指针中。但是有的系统可能会没有这个定义,所以还是建议使用第二种用法。

thank86的博客 1841

论文解析-sciPENN

用这2个CITE-seq共有的protein作为训练集,分别将他们特有的protein作为测试集,评估sciPENN对CITE-seq数据集中缺失的protein丰度预测准确度。来自Seurat 4 的PBMC数据集,样本被注射水疱性口炎病毒 (VSV) 载体 HIV 疫苗,数据集包含每个样本注射疫苗0天、3天、7天的CITE-seq数据。PBMCs作为训练集,MALT作为测试集,利用scRNA-seq测试17个蛋白质表达水平。Monocyte:随机取4个样本作为训练集,剩余4个样本作为测试集。

weixin_46065198的博客 1021

管道机器人手臂机械结构设计cad【8张】+三维图+设计说明书+绛重

履带式管道机器人适用于各种管道环境,包括直管道、弯曲管道、水平管道、垂直管道等,其灵活性和适应性使得它可以应对不同形状和尺寸的管道,完成全面的检测和维护工作。管道机器人研究具有重要的现实意义和深远的社会影响,通过提高工作效率、降低人员风险、提升服务质量、节约成本资源和促进科技创新等方面的作用,为现代工程技术领域的发展和进步做出了积极的贡献。管道机器人是一种能够在管道内部执行各种任务的智能机器人,而管道机器人的机械臂对于管道机器人在管道内执行任务的灵活性、稳定性和效率至关重要。

kejigongjiang的博客 943

【Linux】Linux-路径切换-相对路径和绝对路径&快捷键记录&linux 知识点记录

linux命令 相对路径:相对于当前路径下 “./”:表示当前所在的目录 cd . cd ./ “. ./”:表示当前目录的上一层目录 “/”: 表示根目录 cd … 与 cd …/ 返回当前目录的上一层;与 cd …/一样 cd . 与 cd ./ 还是在当前目录下 切换使用绝对路径 : 使用路径的全称,也就是要使用完整的路径 ...

zcw1234515的博客 3235

化工过程控制软件:Siemens PCS 7二次开发_(8).过程控制算法

在化工过程控制中,过程控制算法是实现自动化控制的关键技术之一。Siemens PCS 7 提供了丰富的控制算法库,但为了满足特定的工艺需求,往往需要进行二次开发。本节将详细介绍如何在 Siemens PCS 7 中进行过程控制算法的二次开发,包括常见的控制算法原理、实现方法和具体示例。

kkchenjj的博客 502

linux文件及目录的管理说明(1)绝对路径与相对路径、目录的切换

 由于linux所有的目录或者文件都是从根目录开始的,所以描述一个目录或者文件的位置的时候就有两种方法:  绝对路径:由根目录(/)开始,一级一级往下写  相对路径:由目前所在的目录开始写起,其中需要记住的是(.)代表当前目录,而(…)则代表上一级目录 上面的图片里使用了两个命令:  pwd:输出当前工作目录绝对路径  它有两个常用参数: -L 输出工作目录的绝对路径,即使它是另外一个目录的字符链接 test是goddog312家目录的字符链接 -P 这个是默认选项,使用这个参数时,如果该工作目录是另

fuluoyide312的博客 2960

Matlab 普通kriging(克里金)插值

Matlab 普通kriging(克里金)插值

dayuhaitang1的博客 4570

【Clickhouse】Clickhouse写入报错keeper server rejected the connection during the handshake

我的clickhouse集群时不时的报这个错误All connection tries failed while connecting to ZooKeeper. nodes: xxx 到时写入数据失败 用的ck自带的keeper。你需要仔细检查ZooKeeper集群的配置和状态,确保所有节点都正常运行,并且能够正确地选举领导者。检查ZooKeeper的ACL以及ClickHouse连接所使用的凭据,确保它们被正确配置和授权。版本不兼容:有时,不同版本的软件之间可能存在不兼容性,导致连接问题。

九师兄 371

相对路径转换成绝对路径

根据Linux相对路径生成绝对路径 leetcode public String simplifyPath(String path) { String[] a = path.split("/"); int[] flag = new int[a.length]; for(int i=0;i<a.length;i++) { String s = a[i]; if (s.isEmpty() || s.eq

jinjiating的专栏 899

倍福--RS232自由口实现

RS232/485通信协议是在现场中常用到的,比如触摸屏、温控模块等设备控控制器做通信,会常用到此类协议,本文介绍RS232/485自由口通信的实现,并用PC调试助手进行测试。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制器软件 3 硬件连接 3 2.1. PC COM介绍 3 2.2. RS232/RS485连接 3 3.2.1. N030…………. 4 3.2.2. N031…………. 4 2.3. 实际线路连接 5 PLC程序 7 3

weixin_41883890的博客 3284

最最基础的干货:Linux中的绝对路径和相对路径

但是,如果你要从 /home/username/programming/project/interface/src/header目录访问 /usr/bin 目录中的某些内容,那么使用 ../../../../../../usr/bin 会比较麻烦,这个时候使用绝对路径更方便。或者程序中使用路径。因为相对路径要从当前目录开始,我们需要告诉 cd 命令向上一级,将我们带到 /home 目录,然后从那里在进入到 prakash 目录。在上图中,第一个路径是以根路径(/)开始的,第二个路径不是以 / 开始的。

Free雅轩的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Linux】Linux 系统编程——相对路径和绝对路径

相对路径和绝对路径是文件系统中定位文件和目录的两种主要方法。它们的主要区别在于如何引用文件的位置。

shopeeai的博客 1730

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

什么是绝对路径,什么是相对路径,绝对路径和相对路径的区别?

绝对路径:绝对路径是指文件在硬盘上真正存在的路径。例如“1.txt”这个文件是存放在硬盘的“C:\Users\15063\Desktop”目录下,那么 “1.txt”这个文档的绝对路径就是“C:\Users\15063\Desktop\1.txt”。 相对路径:相对于自己的目标文件位置。例如“1.htm”文件所在目录为“C:\Users\15063\Desktop\lqf”,而“1.txt”文件所在目录为“C:\Users\15063\Desktop”,那么“1.txt”相对于“1.htm”文件来说,是在

m0_54721895的博客 7万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Linux绝对路径和相对路径

♥️♥️♥️♥️♥️♥️Linux 系统中,文件是存放在目录中的,而目录又可以存放在其他的目录中,因此,用户(或程序)可以借助文件名和目录名,从文件树中的任何地方开始,搜寻并定位所需的目录或文件。 说明目录或文件名位置的方法有两种,分别使用绝对路径和相对路径。绝对路径指的是从根目录(/)开始写起的文件或目录名称,而相对路径则指的是相对于当前路径的写法。 换句话说,绝对路径必须以一个正斜线...

大数据linux基础学习 7869

【Linux】绝对路径与相对路径的使用方法

Linux路径使用指南:绝对路径与相对路径详解 本文全面介绍了Linux系统中路径的概念与使用方法,重点解析了绝对路径和相对路径的区别与应用场景。绝对路径从根目录(/)开始,提供唯一且明确的文件定位;相对路径则基于当前工作目录,更加简洁灵活。文章通过大量命令行示例演示了两种路径的实际操作,包括特殊符号"."(当前目录)和".."(父目录)的使用技巧。同时对比了两种路径在脚本编写中的差异,帮助读者根据具体需求选择合适的路径表示方法,提高Linux系统操作效率。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

Linux相对路径和绝对路径

Linux教程 相对路径和绝对路径 文件路径 文件路径:文件的路径是描述文件在系统中的位置 Linux使用正斜线(/)而不是反斜线(\)来在文件路径中划分目录 相对路径和绝对路径 绝对路径: 绝对路径的写法一定由根目录 ‘/’写起 相对路径: 相对路径的写法不是由根目录 ‘/’写起 单点符(.):表示当前目录 双点符(…):表示当前目录的父目录 在Shell中 /代表根目录 ...

风 抖落了叶 3387

【计算机基础】绝对路径和相对路径

当前工作目录为ProgramFile,该文件的相对路径为 相对于当前目录的相对路径为 “java-prog\f2.java"2.在Unix/Linux系统中,如果当前工作目录为/home/User/Name,要访问这个目录下的。绝对路径是指从根目录开始的完整路径,包括所有父目录的路径,直到目标文件或者目录。当前工作目录是指用户当前正在工作的目录。

m0_67930426的博客 1万+

Linux操作系统的绝对路径和相对路径详解

Linux操作系统中存在着两种路径:绝对路径和相对路径。 我们在访问文件或文件夹的时候,其实都是通过路径来操作的。两种路径在实际操作中能起到同等的作用。 在开始具体介绍之前,我们需要了解Linux的文件系统是谱系结构。在谱系的最上层是根文件夹。根文件夹由“/”来表示。根系下面有孩子文件夹,孩子的下面有孙子文件夹,以此类推。所有的文件就包含在这些文件夹里面。 绝对路径永远都是相对于根文件夹的。它...

u010783226的专栏 6163

Linux相对路径与绝对路径

在Linux中,我们经常做切换目录的操作,所以相对路径与绝对路径大家一定要熟练掌握,否则会影响到Linux后面的学习!

一只苟延残喘的卑微蝼蚁 5156

linux相对路径和绝对路径

《开经偈》无上甚深微妙法百千万劫难遭遇我今见闻得受持愿解如来真实义讲解思路:什么是绝对路径什么是相对路径相对路径和绝对路径存在的合理性什么是绝对路径系统中的所有文件路径,构成一棵树。你在查找一个文件的过程,其实就是在遍历一棵树,你想要的那个文件就是树上的一个节点,从树根到当前节点的遍历就是一条路径。如果你无论查找什么文件都从树根开始,那么最终找到目标文件所遍历的路径就是绝对路径。比如在根路径/下有...

洛神赋 7240

linux学习相对路径与绝对路径

linux学习相对路径与绝对路径    1. 绝对路径        在Linux中,绝对路径是从/(也被称为根目录)开始的,比如/usr、/etc/X11.如果一个路径是从/开始的,它一定是绝对路径,这样就好理解了。        [root@localhost ~]# pwd 注:判断用户当前所处的位置,也就是说他到底位于哪?        /root 注:用户当前

bingshanyijiao_fkx的专栏 4万+

绝对路径、相对路径详解

绝对路径、相对路径详解 1、一个项目运行路径 + 文件所在项目的路径 = 绝对路径! 2、文件在项目的路径 = 相对路径! 例如: 一个Maven工程目录: src ---- main --------- java -------------- com.sunred.Test.java --------- rssource ...

暴暴风的博客 6476

Linux中使用绝对路径或者相对路径进行目录切换、绝对路径和相对路径的理解

绝对路径和相对路径 文章目录绝对路径和相对路径1. 绝对路径2. 相对路径3. 绝对路径和相对路径的使用4. 自动补全5. 小结 学习目标 能够使用绝对路径或者相对路径进行目录切换 1. 绝对路径 从根目录算起的路径叫做绝对路径 例如: /home/python/Desktop /usr/bin 2. 相对路径 从当前目录算起的路径叫做相对路径 例如: - ./test/hello - ...

汪雯琦的博客 1万+
上一篇: [代码实例][Linux系统编程]列出目录下的文件和子目录
下一篇: [代码实例][Linux系统编程]判断相对路径或绝对路径
cloudblaze
博客等级 码龄17年 81粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值