2023-09-17 22:13:42 +03:00
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <signal.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <sys/wait.h>
|
|
|
|
|
//--------------------------------------------------------------------------------------------
|
|
|
|
|
#include "Process_r.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//argv[0] - время
|
|
|
|
|
//args[1] - команда добивания
|
|
|
|
|
//argv[2] путь к драйверу dvm
|
|
|
|
|
//argv[3] f/c(компиляция) или run(запуск)
|
|
|
|
|
//argv[4] имя программы
|
|
|
|
|
//argv[5] .. argv [argc-1] либо флаги компиляции, либо измерения решетки по одному
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main(int argc, char ** argv){
|
|
|
|
|
try {
|
2025-03-13 22:52:44 +03:00
|
|
|
int i;
|
|
|
|
|
char ** args = new char* [argc];
|
2023-09-17 22:13:42 +03:00
|
|
|
for ( i=2; i<argc; ++i)
|
|
|
|
|
args [i-2] = argv[i];
|
|
|
|
|
args[argc-1] = NULL;
|
|
|
|
|
setpgid(0,0);
|
|
|
|
|
int pid = fork();
|
2025-03-13 22:52:44 +03:00
|
|
|
if (pid == 0)
|
|
|
|
|
execvp( argv[1],args);
|
2025-03-14 13:48:30 +03:00
|
|
|
else {
|
|
|
|
|
FILE * pid_file = fopen("PID","w");
|
|
|
|
|
fprintf(pid_file,"%d", pid);
|
|
|
|
|
fclose(pid_file);
|
|
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
catch (const char * exception){
|
|
|
|
|
FILE * ExceptionLog = fopen ( "Exception.txt", "w" );
|
|
|
|
|
fprintf(ExceptionLog,exception);
|
|
|
|
|
fclose(ExceptionLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|