ubuntu c语言 system 获取wifi列表
在 Ubuntu 系统中,使用 C 语言获取 WiFi 列表可以通过以下步骤实现:
- 安装 wireless-tools 和 libiw-dev 库
在终端中执行以下命令:
sudo apt-get update
sudo apt-get install wireless-tools libiw-dev
- 编写 C 代码
编写一个 C 代码文件,例如 wifi.c,代码内容如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE *fp;
char path[1035];
char *token;
char *ssid;
char *signal;
char *security;
char *freq;
char *mode;
char *chan;
fp = popen("iwlist wlan0 scan | grep -E 'ESSID|Quality|Encryption|Frequency|Mode'", "r");
if (fp == NULL) {
printf("Failed to run command\n");
exit(1);
}
while (fgets(path, sizeof(path), fp) != NULL) {
char *p = path;
while (*p && isspace(*p))
++p;
if (strncmp(p, "ESSID", 5) == 0) {
token = strtok(p, "\"");
ssid = strtok(NULL, "\"");
printf("SSID: %s\n", ssid);
} else if (strncmp(p, "Quality", 7) == 0) {
token = strtok(p, "=");
signal = strtok(NULL, " ");
printf("Signal Strength: %s\n", signal);
} else if (strncmp(p, "Encryption", 10) == 0) {
token = strtok(p, ":");
security = strtok(NULL, " ");
printf("Security: %s\n", security);
} else if (strncmp(p, "Frequency", 9) == 0) {
token = strtok(p, ":");
freq = strtok(NULL, " ");
printf("Frequency: %s\n", freq);
} else if (strncmp(p, "Mode", 4) == 0) {
token = strtok(p, ":");
mode = strtok(NULL, " ");
printf("Mode: %s\n", mode);
} else if (strncmp(p, "Channel", 7) == 0) {
token = strtok(p, ":");
chan = strtok(NULL, " ");
printf("Channel: %s\n", chan);
}
}
pclose(fp);
return 0;
}
这个代码使用 popen() 函数执行了一个系统命令 "iwlist wlan0 scan | grep -E 'ESSID|Quality|Encryption|Frequency|Mode'",并从命令的输出中解析出了 WiFi 的 SSID、信号强度、安全性、频率、模式和信道等信息。
- 编译并运行代码
在终端中进入代码文件所在的目录,执行以下命令进行编译:
gcc wifi.c -o wifi -liw
然后执行以下命令运行代码:
./wifi
程序将会输出当前可用的 WiFi 列表以及它们的相关信息
原文地址: http://www.cveoy.top/t/topic/fj7B 著作权归作者所有。请勿转载和采集!