#include #include #include #include #include #include #include //-------------------------------------------------------------------------------------------- #include "Process_r.h" Process_r task; //задача char* coup_de_grace=NULL; void hdl_abort_by_user(int sig) { if ((coup_de_grace!=NULL)&&strlen(coup_de_grace)!=0) system(coup_de_grace); FILE * killed = fopen("INTERRUPT","w"); fprintf(killed,"task was interrupted\n"); fclose(killed); killpg(0, SIGKILL); exit(0); } void set_handlers(){ struct sigaction act; memset(&act, 0, sizeof(act)); //обнуление полей структуры act.sa_handler = hdl_abort_by_user; //установка обработчика в поле стурктуры sigset_t set; //маска сигналов, которые буудт блокироваться во время выполнения обработчика sigemptyset(&set); //предваритальеное обнуление всех сигналов sigaddset(&set, SIGINT); act.sa_mask = set; sigaction(SIGINT, &act, 0); //установка обработчика } //argv[0] - имя программы //argv[0] - время //argv[1] путь к драйверу dvm //argv[2] f/c(компиляция) или run(запуск) //argv[3] имя программы //argv[4] .. argv [argc-1] либо флаги компиляции, либо измерения решетки по одному int main(int argc, char ** argv){ int i; time_t time1; time_t time2; // for (i=0; i