C 语言中获取 WiFi 状态的函数 GetWifiState() 如下所示:

WiFiState GetWifiState() {
    WiFiState ws = WIFI_STATE_NONE;
    FILE* fp;
    char state[32] = {0};
    fp             = fopen(WIFI_MODE, 'r');
    if (fp != nullptr) {
        fgets(state, sizeof(state), fp);
        fclose(fp);
        if (strncmp(state, 'sta', 3) == 0) {
            ws = WIFI_STATE_STA;
        } else if (strncmp(state, 'ap', 2) == 0) {
            ws = WIFI_STATE_AP;
        }
    }
    return ws;
}

是的,文件描述符 fp 在使用完之后需要关闭,可以在 if 语句块的最后加上 fclose(fp)。这样可以避免资源泄漏和不必要的文件操作。

修改后的代码如下:

WiFiState GetWifiState() {
    WiFiState ws = WIFI_STATE_NONE;
    FILE* fp;
    char state[32] = {0};
    fp             = fopen(WIFI_MODE, 'r');
    if (fp != nullptr) {
        fgets(state, sizeof(state), fp);
        fclose(fp); // 关闭文件描述符
        if (strncmp(state, 'sta', 3) == 0) {
            ws = WIFI_STATE_STA;
        } else if (strncmp(state, 'ap', 2) == 0) {
            ws = WIFI_STATE_AP;
        }
    }
    return ws;
}

通过在 if 语句块中添加 fclose(fp) 语句,确保了文件描述符 fp 在使用完之后被正确关闭,避免了资源泄漏和不必要的文件操作。

C语言WiFi状态获取函数:GetWifiState() 的文件描述符关闭问题

原文地址: https://www.cveoy.top/t/topic/np2C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录