C语言WiFi状态获取函数:GetWifiState() 的文件描述符关闭问题
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 在使用完之后被正确关闭,避免了资源泄漏和不必要的文件操作。
原文地址: https://www.cveoy.top/t/topic/np2C 著作权归作者所有。请勿转载和采集!