2016-09-24 5 views
0

Я пытаюсь закодировать приложение, чтобы бесконечно проверять пинг на сервере с помощью _popen, но когда я запускаю приложение какое-то время, функция (_popen) начинает возвращать NULL, пока я ее не перезапущу , Почему это происходит? Как мне его исправить?C++: _popen бесконечный цикл (Windows)

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"); 
     } 
+2

Вы можете взглянуть на '_pclose()', у вас может не хватать ручек, так как вы не закрываете его. –

ответ

2

Код показаны утечки файл дескрипторов, потому что у вас нет соответствующих _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); 

 Смежные вопросы

  • Нет связанных вопросов^_^