-2
Моя цель - подсчитать время для запуска программы execvp. Я хочу, чтобы программа запускала только 5 секунд вершин; как мне это сделать?Как messaure время выполнения программы, вызванной execvp?
я хочу знать, если a.out побежал за 5 секунд
void run_after_compilation(char **argv, int flag) {
pid_t runner;
char *cmd [] = {"./a.out", NULL};
int status;
int fdin = open(argv[2],O_RDONLY);
int fdout = open ("output.txt", O_CREAT | O_RDWR, 0466);
if ((runner = fork()) < 0) {error("could not make fork");}
else if (runner == 0) {
if ((execvp(cmd[0],cmd)) < 0) {}
exit(0);
} else if (runner != 0) {
waitpid(runner,&status,0); // wait the execute to end
}
close(fdin);close(fdout); /*closing the files*/
}
это моя мысль:
for (i = 0; i < 5; i++) {
if (waitpid(runner,&status,WNOHANG) > 0)
if (WIFSTOPPED(status)) {
break;
} else {sleep(1);}
}
if(!WIFSTOPPED(status)) kill (runner, SIGUSR1);
Все ваши вопросы, как правило, относятся к типу - вот моя проблема, решите ее для меня. Сначала попробуйте сами, сообщите о конкретных проблемах, с которыми вы столкнулись, и, возможно, кто-то вам поможет. – kaylum
Я добавил свою мысль - ее все еще не работает – user3253375
Я все еще не понимаю! я читал много, и я не получаю его – user3253375