C語言中擷取和改變目錄的相關函數總結_C 語言

來源:互聯網
上載者:User

C語言getcwd()函數:取得當前的工作目錄
標頭檔:

#include <unistd.h>

定義函數:

char * getcwd(char * buf, size_t size);

函數說明:getcwd()會將當前的工作目錄絕對路徑複製到參數buf 所指的記憶體空間,參數size 為buf 的空間大小。

註:
1、在調用此函數時,buf 所指的記憶體空間要足夠大。若工作目錄絕對路徑的字串長度超過參數size 大小,則返回NULL,errno 的值則為ERANGE。
2、倘若參數buf 為NULL,getcwd()會依參數size 的大小自動設定記憶體(使用malloc()),如果參數size 也為0,則getcwd()會依工作目錄絕對路徑的字串程度來決定所配置的記憶體大小,進程可以在使用完次字串後利用free()來釋放此空間。

傳回值:執行成功則將結果複製到參數buf 所指的記憶體空間, 或是返回自動設定的字串指標. 失敗返回NULL,錯誤碼存於errno.

範例

#include <unistd.h>main(){  char buf[80];  getcwd(buf, sizeof(buf));  printf("current working directory : %s\n", buf);}

執行:

current working directory :/tmp


C語言chdir()函數:改變當前的工作目錄
標頭檔:

#include <unistd.h>

定義函數:

int chdir(const char * path);

函數說明:chdir()用來將當前的工作目錄改變成以參數path 所指的目錄.

傳回值執:行成功則返回0, 失敗返回-1, errno 為錯誤碼.

範例

#include <unistd.h>main(){  chdir("/tmp");  printf("current working directory: %s\n", getcwd(NULL, NULL));}

執行:

current working directory :/tmp


C語言chroot()函數:改變檔案根目錄
標頭檔:

 #include <unistd.h>

定義函數:

int chroot(const char * path);

函數說明:chroot()用來改變根目錄為參數path 所指定的目錄。只有超級使用者才允許改變根目錄,子進程將繼承新的根目錄。

傳回值:調用成功則返回0, 失敗則返-1, 錯誤碼存於errno.

錯誤碼:
1、EPERM 許可權不足, 無法改變根目錄。
2、EFAULT 參數path 指標超出可存取記憶體空間。
3、ENAMETOOLONG 參數path 太長。
4、ENOTDIR 路徑中的目錄存在但卻非真正的目錄。
5、EACCESS 存取目錄時被拒絕。
6、ENOMEM 核心記憶體不足。
7、ELOOP 參數path 有過多符號串連問題。
8、EIO I/O 存取錯誤。

範例

/* 將根目錄改為/tmp, 並將工作目錄切換至/tmp */#include <unistd.h>main(){  chroot("/tmp");  chdir("/");}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.