diff --git a/smi/src/smi_def.h b/smi/src/smi_def.h index 1989e79b7021168bd03c0827b7173c7758cfbd0f..2eb7a75f4ba15385c8ae6bf997aae2871eef15ee 100644 --- a/smi/src/smi_def.h +++ b/smi/src/smi_def.h @@ -2,7 +2,7 @@ #define SMIDEF_H #define VERSION_MAJOR 2 -#define VERSION_MINOR 20 +#define VERSION_MINOR 21 #define ATOMIC_UNLOCKED -1 #define ATOMIC_UNLOCKED0 0 diff --git a/smi/src/taskdisp_nrt.c b/smi/src/taskdisp_nrt.c index 09f476f732dbfafa522f9aaa800f01d76c427e53..bd6ab02075f3bf439a85a35d2f9bbc4daffd78e8 100644 --- a/smi/src/taskdisp_nrt.c +++ b/smi/src/taskdisp_nrt.c @@ -103,12 +103,18 @@ void killProcess_(processType nrtProcessID) ) { printf("[killProcess_] killing process %lld nrtProcessID=%d\n", (long long int)shm->pid[nrtProcessID],nrtProcessID); +/* // kill child procresses sprintf(str,"pkill -9 -P %lld\n",(long long int)shm->pid[nrtProcessID]); ret=system(str); // kill parent process sprintf(str,"kill -9 %lld\n",(long long int)shm->pid[nrtProcessID]); ret=system(str); +*/ +// kill process and all its descendants + sprintf(str,"kill -9 `pstree -l -p %lld | grep -oP '(?<=\\()[0-9]+(?=\\))'`", + (long long int)shm->pid[nrtProcessID]); + ret=system(str); ret=ret; // eliminate compiler warning usleep(STD_SLEEP); // possibly longer sleep time required for (i=0;i<shm->numberOfTaskStates;i++) {