中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
江津市| 阿勒泰市| 钟祥市| 特克斯县| 女性| 太保市| 和田县| 长沙县| 青田县| 康乐县| 菏泽市| 班戈县| 济阳县| 台湾省| 淮北市| 荆州市| 贡觉县| 滦平县| 衡水市| 株洲县| 登封市| 濉溪县| 三门县| 临颍县| 潍坊市| 晋州市| 麦盖提县| 玉龙| 昭觉县| 安丘市| 宁津县| 临汾市| 道孚县| 龙口市| 乌鲁木齐县| 湖南省| 朔州市| 于都县| 手机| 长丰县| 阳春市|