C 쉘 _popen 파이프 마술을 사용하여 쉘에서 "nslookup [IP]"명령을 실행하는 응답을 반복합니다. 아시다시피내 논리가 실패했습니다 (C++, nslookup, char 비교)
은 (터미널에서 그것을 시도 ... 윈도우는 다른 OS 다르게하라는 메시지가 표시 될 수 있습니다 출력을 명령, 나는 윈도우 7을 사용하고 있습니다)을 nslookup을 쿼리는 같은 반환합니다 :
C:\MyApps>nslookup 8.8.8.8
Server: dns.mydomain.com
Address: 192.168.200.15
Name: google-public-dns-a.google.com
Address: 8.8.8.8
을 어떤 DNS 레코드 존재가 없을 때 오류가 정상입니다 :
vector<string> IPAddresses;
// [...] some code to populate IP Addresses into that vector [...]
char buff[512];
for(int x=0;x<IPAddresses.size();x++)
{
cmd = "nslookup " + IPAddresses[x];
FILE *fpipe = _popen(cmd.c_str(),"r");
while(fgets(buff, sizeof(buff), fpipe)!=NULL)
{
//DEBUG CODE HERE
}
}
이제 내 "DEBUG 코드"예하고 "비 존재하지 않는 도메인 IP를 찾을 수 없습니다"는 것을주의 자신의 출력을 (확인 : 여기에 내 코드 (중요한 조각은)입니다) :
,451,515,if(buff[0]=='N') cout<<buff;
출력 :
Name: computer1.mydomain.com
Name: computer2.mydomain.com
*** dns.mydomain.com can't find 192.168.200.55: Non-existent domain
Name: computer3.mydomain.com
*** dns.mydomain.com can't find 192.168.200.122: Non-existent domain
디버그 코드 2 :
if(buff[0]=='*') cout<<buff;
출력 :
*** dns.mydomain.com can't find 192.168.200.55: Non-existent domain
*** dns.mydomain.com can't find 192.168.200.122: Non-existent domain
존재하지 않는 도메인 오류가 내가 찾고있을 때 팝업 수있는 방법 버프 [0]은 'N'이 될까요? 사실, 그것은 두 디버그 예제에서 나타나기 때문에 내 프로그램은 char이 'N'과 '*'라고 생각합니까 ???
'popen'에서'stdout' 결과물을 얻었지만'stderr'에 대한 오류/진단 메시지는 여전히 콘솔에 직접 전달됩니다. –
그런 경우 전체 DNS 조회 오류가 출력됩니다. 맞습니까? 존재하지 않는 도메인 오류의 세 번째 줄뿐만 아니라? – armani
잘 모르겠다 - Windows이므로 아무 것도 확실하지 않지만 가장 좋은 추측은 stdout/stderr 일이라는 것입니다. 명령 줄에서 이론을 테스트 할 수 있습니다. –