Ładny brzuch
Cze
Mam taki problem. Napisaem tak funkcje ktra ma uruchamia komend przekazan jej w parametrze, przechwytywa wynik i zapisywa go do pliku;
Poniszy kod jest wynikiem sklejania i edycji kodw z rnych tutoriali i czciowo z MSDN-a. Prosz take o nie odsyaine mnie do googli lub rde wiedzy typu msdn jeli ju to jaki konkretny kod :] - prosze o skomentowanie mojego programu i napisanie co jest le. Licz na wasz wiedz i pomoc ;-)
void cmd_command(char * comm){ PROCESS_INFORMATION pi; STARTUPINFO si; HANDLE ppi_read, ppi_write; SECURITY_ATTRIBUTES saAttr; saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.bInheritHandle = TRUE; saAttr.lpSecurityDescriptor = NULL; bool cpi = CreatePipe(&ppi_read, &ppi_write, &saAttr, 1024); ZeroMemory( &si, sizeof(STARTUPINFO) ); si.cb = sizeof(STARTUPINFO); si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; si.hStdInput = INVALID_HANDLE_VALUE; si.hStdOutput = ppi_write; si.hStdError = ppi_write; si.wShowWindow= SW_HIDE; bool cpr = CreateProcess( NULL, comm, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); WaitForSingleObject( pi.hProcess, INFINITE ); FILE *out = fopen("bufout.txt", "w"); if(!cpr) fprintf(out, "Nie udao sie utworzy procesu\n"); else fprintf(out, "Utworzono proces\n"); if(!cpi) fprintf(out, "Nie udao sie utworzy pipy\n");else fprintf(out, "Utworzono pipe\n"); fprintf(out, "-------------\n"); ReadFile(ppi_read, chBuf, 4096, &dwRead, NULL); fprintf(out, "%s", chBuf); fclose(out); DWORD code; if( GetExitCodeProcess( pi.hProcess, &code ) == TRUE ) { // 0 jesli host zostal znaleziony // 1 jesli host nie zostal znaleziony // Censoured;-P;-) } CloseHandle( pi.hThread ); CloseHandle( pi.hProcess ); }
problem jest taki ze w pliku wynikowym nie ma wyjscia programu.
odpalaem go dla pinga oraz dla takiego progs-a:
#include <cstdio> using namespace std; int main(){ printf("A ja wole moja mame co ma wlosy jak atrament!!!!\n"); fflush(stdout); return(0); }
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Mam taki problem. Napisaem tak funkcje ktra ma uruchamia komend przekazan jej w parametrze, przechwytywa wynik i zapisywa go do pliku;
Poniszy kod jest wynikiem sklejania i edycji kodw z rnych tutoriali i czciowo z MSDN-a. Prosz take o nie odsyaine mnie do googli lub rde wiedzy typu msdn jeli ju to jaki konkretny kod :] - prosze o skomentowanie mojego programu i napisanie co jest le. Licz na wasz wiedz i pomoc ;-)
void cmd_command(char * comm){ PROCESS_INFORMATION pi; STARTUPINFO si; HANDLE ppi_read, ppi_write; SECURITY_ATTRIBUTES saAttr; saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.bInheritHandle = TRUE; saAttr.lpSecurityDescriptor = NULL; bool cpi = CreatePipe(&ppi_read, &ppi_write, &saAttr, 1024); ZeroMemory( &si, sizeof(STARTUPINFO) ); si.cb = sizeof(STARTUPINFO); si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW; si.hStdInput = INVALID_HANDLE_VALUE; si.hStdOutput = ppi_write; si.hStdError = ppi_write; si.wShowWindow= SW_HIDE; bool cpr = CreateProcess( NULL, comm, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ); WaitForSingleObject( pi.hProcess, INFINITE ); FILE *out = fopen("bufout.txt", "w"); if(!cpr) fprintf(out, "Nie udao sie utworzy procesu\n"); else fprintf(out, "Utworzono proces\n"); if(!cpi) fprintf(out, "Nie udao sie utworzy pipy\n");else fprintf(out, "Utworzono pipe\n"); fprintf(out, "-------------\n"); ReadFile(ppi_read, chBuf, 4096, &dwRead, NULL); fprintf(out, "%s", chBuf); fclose(out); DWORD code; if( GetExitCodeProcess( pi.hProcess, &code ) == TRUE ) { // 0 jesli host zostal znaleziony // 1 jesli host nie zostal znaleziony // Censoured;-P;-) } CloseHandle( pi.hThread ); CloseHandle( pi.hProcess ); }
problem jest taki ze w pliku wynikowym nie ma wyjscia programu.
odpalaem go dla pinga oraz dla takiego progs-a:
#include <cstdio> using namespace std; int main(){ printf("A ja wole moja mame co ma wlosy jak atrament!!!!\n"); fflush(stdout); return(0); }