Linux 相對路徑轉化為絕對路徑 C語言 (realpath函數)

  • 功能簡述:?將路徑轉為絕對路徑。
  • 函數原型:?char * realpath (const char *restrict name, char *restrict resolved)
    ○ name:原始路徑。
    ○ resolved:存放規范化路徑的地址。可以為 null。
    ○ 返回值:正常情況和resolved是同一個指針。
  • 頭文件:?stdlib.h

將參數path所指的相對路徑轉換成絕對路徑后存于參數resolved_path所指的字符串數組或指針中

如果resolved_path為NULL,則該函數調用malloc分配一塊大小為PATH_MAX的內存來存放解析出來的絕對路徑,并返回指向這塊區域的指針。程序員應調用free來手動釋放這塊內存。

示例:

#include <stdio.h>
#include <stdlib.h>void retAbsPath(const char * path,char* absPath)
{realpath(path,absPath);
}int main()
{//第一種用法char *path = "./";char absPath[256];retAbsPath(path,absPath);printf("path = %s\n",path);printf("absPath = %s\n", absPath);//第二種用法char* ret = realpath(path,NULL);printf("path = %s\n",path);printf("ret = %s\n",ret);//使用第二種方法記得釋放realpath分配的內存free(ret);return 0;
}

?輸出:

path = ./
absPath = /home/projects/protectFile
path = ./
ret = /home/projects/protectFile

注意事項:

函數第二個參數resolved 參數可以為 null。當它為 null 時等同于函數canonicalize_file_name,返回值指向函數內動態申請的內存空間,所以要記得 free,建議使用第二種用法而不是第一種。
事實上,我的代碼中第一種用法absPath很有可能會越界,如果傳入的第二參數 resolved 非 null 指針,一定要保證有足夠的空間存放格式化的地址,可以使用PATH_MAX宏。

Linux/Unix 系統會在limits.h頭文件中定義PATH_MAX宏,表示路徑名的最大長度。

但是有的系統可能會沒有這個定義,所以還是建議使用第二種用法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36243.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36243.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36243.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是港股通?港股通碎股如何進行交易傭金最低萬0.8?

港股通是一種投資渠道&#xff0c;它允許符合條件的內地投資者通過內地的證券賬戶&#xff0c;間接地買賣在香港聯合交易所上市的股票。這一機制是滬港通和深港通計劃的一部分&#xff0c;旨在促進內地與香港資本市場的互聯互通。 ### 港股通的特點包括&#xff1a; - 交易范…

無痛接入FastText算法進行文本分類(附代碼)

AI應用開發相關目錄 本專欄包括AI應用開發相關內容分享&#xff0c;包括不限于AI算法部署實施細節、AI應用后端分析服務相關概念及開發技巧、AI應用后端應用服務相關概念及開發技巧、AI應用前端實現路徑及開發技巧 適用于具備一定算法及Python使用基礎的人群 AI應用開發流程概…

API-其他事件

學習目標&#xff1a; 掌握其他事件 學習內容&#xff1a; 頁面加載事件元素滾動事件頁面尺寸事件 頁面加載事件&#xff1a; 加載外部資源&#xff08;如圖片、外聯CSS和JavaScript等&#xff09;加載完畢時觸發的事件。 為什么要學&#xff1f;&#xff1f; 有些時候需要等…

OnlyOffice:為現代工作方式而生的辦公套件

ONLYOFFICE官網鏈接&#xff1a;https://www.onlyoffice.com/zh/office-suite.aspx https://www.onlyoffice.com/zh/pdf-editor.aspx OnlyOffice 是一款開源的辦公套件&#xff0c;它提供了一系列的辦公工具&#xff0c;包括文檔編輯器、表格編輯器和演示文稿編輯器。這些工具…

帶你了解現行數據庫的高級特性和新方法

數據庫的高級特性和新方法 數據庫的高級操作數據庫事務用戶權限控制數據的備份與還原Binlog運行日志數據庫的新特性窗口函數的使用 閱讀指南&#xff1a; 本文探討了數據庫的高級特性和新方法&#xff0c;詳細介紹了這些高級特性及其操作方式&#xff0c;并涵蓋了一些最新的操作…

客戶案例|某 SaaS 企業租戶敏感數據保護實踐

近年來&#xff0c;隨著云計算技術的快速發展&#xff0c;軟件即服務&#xff08;SaaS&#xff09;在各行業的應用逐漸增多&#xff0c;SaaS 應用給企業數字化發展帶來了便捷性、成本效益與可訪問性&#xff0c;同時也帶來了一系列數據安全風險。作為 SaaS 產品運營服務商&…

韓國鋰電池工廠火災:行業安全警鐘再次敲響

三天前&#xff0c;6月24日上午&#xff0c;韓國京畿道華城市一電池廠突發火災&#xff0c;造成嚴重人員傷亡&#xff0c;其中包括多名中國籍員工。這一事件不僅令人痛心&#xff0c;更為全球鋰電池行業安全敲響了警鐘。 事發當天&#xff0c;電池廠內堆放鋰電池成品的區域突然…

TypeError: %c requires int or char

踩坑&#xff1a;在用python寫腳本查詢sql數據時&#xff0c;使用%s來替換sql語句里的變量&#xff0c;結果一直報&#xff0c;而其他sql使用同樣的方法正常&#xff0c;最后發現是因為sql語句里有模糊查詢 like "%測試%"&#xff0c;這里的%被誤以為%s&#xff0c;解…

Mendix 創客訪談錄|Mendix開發制造業客戶復雜應用的強大實力

本期創客 鄭立 Eviden中國低代碼服務團隊負責人 大家好&#xff0c;我是鄭立&#xff0c;目前擔任Eviden中國低代碼服務團隊的負責人&#xff0c;Mendix是Eviden中國在低代碼領域的最重要的合作伙伴&#xff0c;目前我們在多個制造業客戶中推廣和實施Mendix低代碼項目&#xff…

[MQTT]Mosquitto的權限管理_使用者/密碼(pwfile)和訪問控制清單(aclfile)

延續Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章&#xff0c;經解讀mosquitto官網文檔&#xff0c;在權限管理部分&#xff0c;除了設置使用者/密碼(pwfile)之外&#xff0c;還有訪問控制清單(Access Control List, aclfile)可以設置。經過測試&#xff0c;同時設…

Linux 中變量的取用與設定

優質博文&#xff1a;IT-BLOG-CN Linux是一個多人多任務的環境&#xff0c;每個人登錄系統都能取得一個bash shell&#xff0c;每個人都能夠使用bash下達mail這個指令來接收自己的郵箱等等。問題是&#xff0c;bash如何得知你的郵箱是那個文件&#xff1f;這就需要『變量』的幫…

【ubuntu noble】docker 容器無法使用 nvidia gpu

運行ai模型的時候提示 no GPU available 執行 nvidia-smi 提示 Failed to initialize NVML: Unknown Error 解決方案 一. 宿主機執行sudo docker info&#xff0c;確保 runtime 字段中有 nvidia 字樣 Runtimes: nvidia runc io.containerd.runc.v2 Default Runtime: runc 注…

從0開始學習pyspark--pyspark的核心概念[第0節]

在學習 PySpark時會遇到很多新的關鍵詞,理解這些概念,對我們學習PySpark有極大的幫助,以下是一些PySpark的關鍵概念及其詳細解釋&#xff1a; 1. PySpark PySpark是Apache Spark的Python API。Spark是一個用于大規模數據處理的開源分布式計算系統&#xff0c;支持內存計算和基…

基于Java的寵物領養管理系統【附源碼】

摘 要 近些年來&#xff0c;隨著科技的飛速發展&#xff0c;互聯網的普及逐漸延伸到各行各業中&#xff0c;給人們生活帶來了十分的便利&#xff0c;寵物管理系統利用計算機網絡實現信息化管理&#xff0c;使整個寵物領養的發展和服務水平有顯著提升。 本文擬采用IDEA開發工具…

《分析模式》漫談07-怎樣把一張圖從不嚴謹改到嚴謹

DDD領域驅動設計批評文集 做強化自測題獲得“軟件方法建模師”稱號 《軟件方法》各章合集 下圖是《分析模式》原書第2章的圖2.10&#xff0c;里面有一些錯誤和考慮不周的地方&#xff1a; 2004中譯本和2020中譯本的翻譯如下&#xff1a; 基本上都是照搬&#xff0c;沒有改過…

【02-02】SpringMVC基于注解的應用

一、請求處理 1、常用注解 RequestMapping 作用&#xff1a;用來匹配客戶端發送的請求&#xff08;用來處理URL映射&#xff0c;將請求映射到處理方法中&#xff09;&#xff0c;可以在類或者方法上使用。 用在類上&#xff0c;可以將請求模塊化&#xff0c;避免請求方法中的…

【Java Web】三大域對象

目錄 一、域對象概述 二、三大域對象 三、域對象使用相關API 一、域對象概述 一些可用于存儲數據和傳遞數據的對象被稱為域對象&#xff0c;根據傳遞數據范圍的不同&#xff0c;我們稱之為不同的域&#xff0c;不同的域對象代表不同的域&#xff0c;共享數據的范圍也不同。 二、…

【小紅書標題打造】規則+底層邏輯解析|輔助工具|爆款必備

前言 大家好&#xff0c;我是一名自媒體工具人&#xff0c;今天不是教大家去自己寫標題&#xff08;現在這個時代自己寫真沒必要&#xff09;而是教大家了解爆款標題的相關知識以及辨別。后面會附贈 安裝此文規則生成標題的輸出工具。在這個工具發展龐大的時代&#xff0c;如果…

【知識圖譜系列】一步步指導:安裝與配置JDK和Neo4j的完美搭配

本文將提供詳細的步驟&#xff0c;介紹如何下載、安裝和配置Java開發工具包&#xff08;JDK&#xff09;以及流行的圖形數據庫Neo4j。將從選擇合適的JDK版本開始&#xff0c;然后是下載和配置環境變量&#xff0c;接著以同樣的方式處理Neo4j。最后&#xff0c;會通過一些檢查步…

Windows應急響應靶機 - Web3

一、靶機介紹 應急響應靶機訓練-Web3 前景需要&#xff1a;小苕在省護值守中&#xff0c;在靈機一動情況下把設備停掉了&#xff0c;甲方問&#xff1a;為什么要停設備&#xff1f;小苕說&#xff1a;我第六感告訴我&#xff0c;這機器可能被黑了。 這是他的服務器&#xff…