我正在尝试制作一个 C++ 程序来连接到网络。
如果密码正确,Snippet 可以正常工作。
bool connect(const char* ssid, const char* key)
{
bool ret = false;
try
{
if ((ssid) && (key))
{
std::string cmd = "nmcli device wifi connect " + std::string(ssid) + " password " + std::string(key);
auto fp = popen(cmd.c_str(), "r");
if (fp) //changed if contents to make a "sharable" sample
{
char buff[2048] = {0};
while (fgets(buff, sizeof(buff), fp) != nullptr)
{
if(std::string(buff).find("success") != std::string::npos)
{
ret = true;
break;
}
}
}
}
}
catch (std::exception& ex)
{
std::cerr<<"exception: "<<ex.what()<<std::endl;
}
return ret;
}
我的问题是,如果密码不正确,软件会打开提示,而不是直接给我凭据错误。
如果我手动关闭提示,代码片段会按预期运行。
有没有办法防止密码重试提示?甚至更好的方法来处理这个*?
*目前无视安全问题(密码存储在 cmd 历史记录等)。