Ausgabe von aufgerufenem Programm unterdrücken
-
Hallo zusammen,
wie kann ich die Ausgabe von "ping" auf dem Bildschirm unterdrücken? Ich benötige lediglich den Rückgabewert, welcher mir nach i_pingstatus geliefert wird.
Habe schon mehrere Sachen ausprobiert, konnte aber lediglich die Ausgabe aus meinem Programm unterdrücken/umleiten, jedoch nicht die aus dem Programm ping.exe
s_callping = string("ping ") + at_remote_server[i_hostcounter].str_host + string(" -n 1 -w 2000"); p_cp = s_callping.c_str(); i_pingstatus = system(p_cp);Vielen Dank im Voraus.
-
CreateProcess... / WaitForSingleObject auf hProcess, GetProcessExitCode...
-
Microsoft hätte alternativ auch Funktionen mit denen man pingen kann im Angebot:
http://msdn.microsoft.com/en-us/library/aa366050(VS.85).aspx
-
Vielen Dank euch beiden!
STARTUPINFO si; PROCESS_INFORMATION pi; //init the STARTUPINFO struct memset(&si,0,sizeof(si)); si.cb=sizeof(si); sprintf(bff,"ping localhost -n 1 -w 2000"); // Start the child process. if( !CreateProcess( NULL, // No module name (use command line) bff, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure ) { //printf( "CreateProcess failed (%d).\n", GetLastError() ); return 0; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); DWORD exitCode=0; if (GetExitCodeProcess(pi.hProcess, &exitCode)) { cout << "exitCode: " << exitCode; } // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread );Fragen:
1)
Wie kann ich die Ausgabe unterdrücken? Zur Zeit schreibt er sie mir noch auf die Konsole.//printf( "CreateProcess failed (%d).\n", GetLastError() );Wie bekomme ich die zur Zeit auskommentierte Zeile zum laufen? GetLastError() ist DWORD, oder?
-
Du kannst die Ausgabe in eine Pipe umleiten:
http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspxDWORD ist quasi ein 32-bit unsigned integer
WORD ist ein 16-bit unsigned integer
Probier bei printf() mal "%u"