Linux 中C語(yǔ)言getcwd()函數(shù)的用法
Linux 中C語(yǔ)言getcwd()函數(shù)的用法
先來(lái)看該函數(shù)的聲明:
#include<unistd.h> char *getcwd(char *buf,size_t size);
介紹:
參數(shù)說(shuō)明:getcwd()會(huì)將當(dāng)前工作目錄的絕對(duì)路徑復(fù)制到參數(shù)buffer所指的內(nèi)存空間中,參數(shù)size為buf的空間大小。
普通的用法會(huì)是這樣:
#define MAX_SIZE 255 char path(MAX_SIZE); getcwd(path,sizeof(path)); puts(path);
這樣會(huì)將工作目錄的絕對(duì)路徑復(fù)制到buf所指向的空間中,但如果路徑長(zhǎng)度大于size,則會(huì)返回NULL,錯(cuò)誤代碼為ERANGE.所以我們?cè)诙xpath的時(shí)候得定義的足夠大,但這樣又會(huì)使得內(nèi)存浪費(fèi),Linux的文件名長(zhǎng)度限制為255個(gè)英文字符,理論上絕對(duì)路徑的大小應(yīng)該可以足夠大,故而這樣使用總有返回NULL的時(shí)候,所以getcwd()個(gè)我們提供了下面的一種用法:
可以采取令 buf 為 NULL并使 size 為零(百度百科里介紹可以使用負(fù)值但我測(cè)試的時(shí)候是段錯(cuò)誤)來(lái)使 getcwd 調(diào)用 malloc 動(dòng)態(tài)給 buf 分配,但是這種情況要特別注意使用后釋放緩沖以防止內(nèi)存泄漏。
#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main(void) { char *path = NULL; path = getcwd(NULL,0); puts(path); free(path); return 0; }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
shell腳本打印日期時(shí)間的實(shí)現(xiàn)示例
在shell 中,可以使用 `date` 命令打印系統(tǒng)時(shí)間,本文主要介紹了shell腳本打印日期時(shí)間的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09一個(gè)監(jiān)控LINUX目錄和文件變化的Shell腳本分享
這篇文章主要介紹了一個(gè)監(jiān)控LINUX目錄和文件變化的Shell腳本分享,對(duì)服務(wù)器經(jīng)常被掛馬的朋友時(shí)分有用,需要的朋友可以參考下2014-09-09shell for循環(huán)與數(shù)組應(yīng)用介紹
先舉一個(gè)例子,shell for循環(huán)讀取一個(gè)文件,把每一行賦值給一個(gè)數(shù)組的變量,然后介紹shell數(shù)組的相關(guān)知識(shí),有需要的朋友可以參考下2013-02-02Shell $?獲取函數(shù)返回值或者上一個(gè)命令的退出狀態(tài)
這篇文章主要介紹了Shell $?獲取函數(shù)返回值或者上一個(gè)命令的退出狀態(tài),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01用來(lái)檢測(cè)輸入的選項(xiàng)$1是否在PATH中的shell腳本
今天無(wú)意中發(fā)現(xiàn)一本挺有意思的shell編程的書,是e文的,內(nèi)容是101個(gè)shell案例,堅(jiān)持明天看一個(gè),寫點(diǎn)心得2016-08-08Linux下文件剪切的shell腳本實(shí)現(xiàn)代碼
本篇文章主要介紹了Linux下文件剪切的sh腳本實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10