我正在尝试对应用程序进行编码,以使用_popen无限检查到服务器的ping,但是当我运行应用程序一段时间后,函数(_popen)开始返回NULL,直到重新启动它为止。为什么会这样呢?我应该如何解决?
FILE *fin = _popen("ping 104.160.131.1", "r");
while (fin == NULL) {
std::cout << "If this takes too long restart application";
fin = _popen("ping 104.160.131.1", "r");
system("cls");
}
最佳答案
显示的代码泄漏文件描述符,因为您没有相应的_pclose()调用,这最终会导致您描述的行为。
FILE *fin = _popen("ping 104.160.131.1", "r");
while (fin == nullptr) {
std::cout << "If this takes too long restart application";
fin = _popen("ping 104.160.131.1", "r");
system("cls");
}
//...
_pclose(fin);
关于c++ - C++:_popen无限循环(Windows),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39681922/