2016-09-24 11 views
0

_popen을 사용하여 서버에 ping을 무한히 확인하도록 응용 프로그램을 코딩하려하지만 잠시 동안 응용 프로그램을 실행할 때 함수 (_popen)가 다시 시작될 때까지 NULL을 반환하기 시작합니다. . 왜 이런 일이 일어날까요? 그것을 고정시키는 방법은 무엇입니까? 당신은 결국 당신이 설명하고있는 행동을 야기 해당 _pclose() 전화를 가지고 있지 않기 때문에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

코드 표시 누출 파일 기술자.

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);