חישוב זמן ריצה
שלום לכולם
נתונה לי הבעיה הבאה:
יש לי תוכנית כתובה ב- c++ שהמטרה שלה זה להריץ קבצי בדיקה לתוכנית אחרת
(אני יודע שזה לא הכי יעיל או חכם לעשות אבל זה מה שאני יודע לעשות)
אני עשיתי את התוכנית ככה שאני כל פעם עושה fork
ומפעיל execvp
אני הייתי רוצה לדעת איך לחשב את הזמן ריצה של התוכנית שאני עושה לה execvp
ניסתי לעשות את הדבר הבא :
times(&start);
int cpid = fork();
int status;
char* args[]= {(char*) (string("./plan").c_str()),(char* )d_name,(char* )p_name,(char* )out,(char*) (string("false").c_str()),(char*) (string("false").c_str()),NULL};
switch (cpid) {
case -1: printf("Fork failed; cpid == -1\n");
break;
case 0: //child_pid = getpid();
execvp((char*) (string("./plan").c_str()),args);
cout <<"ERROR : exec failed:" <<endl;
exit(1);
break;
default: printf("This is the parent: waiting for %d to finish\n", cpid);
waitpid(cpid, &status, 0);
times(&end);
int total_ms = (end.tms_utime - start.tms_utime) * 10;
cout << "Total time: " << total_ms << " seconds" << endl;
אבל תמיד מודפס לי 0 למרות שלא כך הדבר (אני יודע כי בתוך התוכנית שאני מנסה להריץ יש לי מונה זמן והוא מראה דברים אחרים לגמרי)
אני לא מבין מה אני עושה לא נכון
אשמח לעזרה
שלום לכולם
נתונה לי הבעיה הבאה:
יש לי תוכנית כתובה ב- c++ שהמטרה שלה זה להריץ קבצי בדיקה לתוכנית אחרת
(אני יודע שזה לא הכי יעיל או חכם לעשות אבל זה מה שאני יודע לעשות)
אני עשיתי את התוכנית ככה שאני כל פעם עושה fork
ומפעיל execvp
אני הייתי רוצה לדעת איך לחשב את הזמן ריצה של התוכנית שאני עושה לה execvp
ניסתי לעשות את הדבר הבא :
times(&start);
int cpid = fork();
int status;
char* args[]= {(char*) (string("./plan").c_str()),(char* )d_name,(char* )p_name,(char* )out,(char*) (string("false").c_str()),(char*) (string("false").c_str()),NULL};
switch (cpid) {
case -1: printf("Fork failed; cpid == -1\n");
break;
case 0: //child_pid = getpid();
execvp((char*) (string("./plan").c_str()),args);
cout <<"ERROR : exec failed:" <<endl;
exit(1);
break;
default: printf("This is the parent: waiting for %d to finish\n", cpid);
waitpid(cpid, &status, 0);
times(&end);
int total_ms = (end.tms_utime - start.tms_utime) * 10;
cout << "Total time: " << total_ms << " seconds" << endl;
אבל תמיד מודפס לי 0 למרות שלא כך הדבר (אני יודע כי בתוך התוכנית שאני מנסה להריץ יש לי מונה זמן והוא מראה דברים אחרים לגמרי)
אני לא מבין מה אני עושה לא נכון
אשמח לעזרה