getcwd()
是一個 C 語言庫函數,用于獲取當前工作目錄的絕對路徑
unistd.h
。#include <unistd.h>
getcwd()
函數時,需要傳遞一個字符數組(通常是一個字符串)作為參數,該數組的大小應該至少為路徑的最大長度。為了避免潛在的緩沖區溢出,建議使用 PATH_MAX
宏來確定所需的大小。#include <limits.h>
#include <unistd.h>
#include <iostream>
int main() {
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) != nullptr) {
std::cout << "Current working directory: " << cwd << std::endl;
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
如果 getcwd()
函數失敗,它將返回 nullptr
,并設置 errno
以表示錯誤原因。可以使用 perror()
或 strerror()
函數打印錯誤信息。
如果你需要處理路徑中的特殊字符(如空格、引號等),可以將字符數組聲明為 std::string
類型,然后使用 getcwd()
函數獲取路徑。std::string
會自動處理這些特殊字符。
#include <unistd.h>
#include <iostream>
#include <string>
int main() {
std::string cwd;
if (getcwd(cwd.data(), cwd.capacity()) != nullptr) {
std::cout << "Current working directory: " << cwd << std::endl;
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
注意:getcwd()
函數可能受到文件系統限制的影響,因此在某些情況下,可能需要使用其他方法(如 stat()
或 fcntl()
)來獲取當前工作目錄。