91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

C++ getcwd如何處理符號鏈接循環

c++
小樊
81
2024-11-27 14:52:13
欄目: 編程語言

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() 函數來處理可能的符號鏈接循環。

0
张家界市| 四子王旗| 青浦区| 温州市| 扶绥县| 横山县| 琼结县| 个旧市| 高青县| 邯郸县| 黎平县| 桃江县| 南宫市| 兴业县| 延边| 福清市| 牟定县| 凤城市| 成都市| 房产| 濉溪县| 乳山市| 贺州市| 兴和县| 肥西县| 荥阳市| 内江市| 祁阳县| 新昌县| 菏泽市| 井陉县| 甘肃省| 新密市| 阿鲁科尔沁旗| 忻州市| 镇赉县| 南漳县| 娄烦县| 肃南| 遂昌县| 长沙市|