[C++] Otwieranie programów w trakcie wykonywania innego programu
Ostatnio zmodyfikowano 2015-05-09 18:03
Roofy5 Temat założony przez niniejszego użytkownika |
[C++] Otwieranie programów w trakcie wykonywania innego programu » 2015-05-08 15:50:31 Witam! W skrócie mam taki problem. Napisałem program, który bada czas działania paru algorytmów sortujących. Do sortowania używa tablicy o wymiarze N, gdzie N jest przekazywane do programu jako parametr funkcji main(). Czas działania programu dla dużych tablic ( >1 000 000) elementów dochodzi nawet do kilku godzin (6 algorytmów sortujących). Wyniki są dopisywane do istniejącego pliku. Wpadłem na taki o to pomysł, żeby stworzyć osobny program, który będzie testował ten mój pierwszy program :D Wygląda to tak: #include <process.h> #include <stdio.h> #include <stdlib.h> #include <Windows.h>
#define ilosc_testow 11
char * testy[ ilosc_testow ] = { "100", "1000", "10000", "25000", "50000", "75000", "100000", "250000", "500000", "750000", "1000000" };
int main() { int i; for( i = 0; i < ilosc_testow; i++ ) { _execv( "Sortowanie_Projekt2_TESTY.exe", testy ); } system( "pause" ); }
I tu właśnie mam problem - jak mam używać funkcji execv, tak żeby można było przesłać do niej parametr? Jak widać potrzebuję uruchomić ten program kilkanaście razy. Funkcja execv niestety działa tak że po otwarciu nowego programu, mój program testujący zostaje zakończony. Wykonuje się tylko 1 test. Może polecicie mi inną funkcję? P.S. tablica ma zawierać słowa a nie liczby - mój program sortujący sam przetwarza char *[] na int |
|
Piastlis |
» 2015-05-09 00:44:03 ShellExecuteA. Parametr jest przekazywany przez typ LPSTR czyli ten sam co w WinMain.Prawdopodobnie będziesz musiał użyć sleep po każdym wywołaniu. Inaczej komp zatka się na amen na dłuższą chwilę. |
|
Roofy5 Temat założony przez niniejszego użytkownika |
» 2015-05-09 11:08:26 Poradziłem sobie z problemem w trochę inny sposób ;) Dla ciekawych wrzucam kod - może komuś się przyda: #define ilosc_testow 11
char * testy[ ilosc_testow ] = { "100", "1000", "10000", "25000", "50000", "75000", "100000", "250000", "500000", "750000", "1000000" };
int main() { int i; for( i = 0; i < ilosc_testow; i++ ) { printf( "Test nr %d, Ilosc elementow: %s", i, testy[ i ] ); char nazwa[ 100 ] = { "Sortowanie_Projekt2_TESTY.exe " }; strcpy( nazwa + 30, testy[ i ] ); system( nazwa ); Sleep( 100 ); printf( " DONE\n" ); }
|
|
pekfos |
» 2015-05-09 18:03:33 strcpy( nazwa + 30, testy[ i ] );
|
Nie prościej użyć strcat()? |
|
« 1 » |