getcwd()
函數用于獲取當前工作目錄的絕對路徑
#include <iostream>
#include <limits.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
bool follow_symlinks(const char *path, char *buffer, size_t size) {
ssize_t len = readlink(path, buffer, size - 1);
if (len < 0) {
return false;
}
buffer[len] = '\0';
if (len == 0 || strcmp(buffer, path) == 0) {
return true;
}
return follow_symlinks(buffer, buffer, size);
}
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;
}
在這個示例中,我們定義了一個名為 follow_symlinks
的輔助函數,它遞歸地跟隨符號鏈接,直到找到一個非符號鏈接的目標或達到最大遞歸深度。然后,我們在 main
函數中使用 getcwd()
獲取當前工作目錄,并調用 follow_symlinks()
函數來處理可能的符號鏈接循環。