Linux 中C語言getcwd()函數(shù)的用法
先來看該函數(shù)的聲明:
#includeunistd.h>
char *getcwd(char *buf,size_t size);
介紹:
參數(shù)說明:getcwd()會將當前工作目錄的絕對路徑復制到參數(shù)buffer所指的內(nèi)存空間中,參數(shù)size為buf的空間大小。
普通的用法會是這樣:
#define MAX_SIZE 255
char path(MAX_SIZE);
getcwd(path,sizeof(path));
puts(path);
這樣會將工作目錄的絕對路徑復制到buf所指向的空間中,但如果路徑長度大于size,則會返回NULL,錯誤代碼為ERANGE.所以我們在定義path的時候得定義的足夠大,但這樣又會使得內(nèi)存浪費,Linux的文件名長度限制為255個英文字符,理論上絕對路徑的大小應該可以足夠大,故而這樣使用總有返回NULL的時候,所以getcwd()個我們提供了下面的一種用法:
可以采取令 buf 為 NULL并使 size 為零(百度百科里介紹可以使用負值但我測試的時候是段錯誤)來使 getcwd 調(diào)用 malloc 動態(tài)給 buf 分配,但是這種情況要特別注意使用后釋放緩沖以防止內(nèi)存泄漏。
#includestdio.h>
#includestdlib.h>
#includeunistd.h>
int main(void)
{
char *path = NULL;
path = getcwd(NULL,0);
puts(path);
free(path);
return 0;
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章:- linux下c語言的多線程編程
- Linux 下C語言獲取文件大小
- Linux下C語言的幾道經(jīng)典面試題小結(jié)(分享)
- Linux 下C語言連接mysql實例詳解
- linux C語言開發(fā)管道通信實例詳解
- linux下C語言實現(xiàn)寫日志功能