我正在尝试对应用程序进行编码,以使用_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/

10-11 21:35