is_process_running: Check for zombie status.
This commit is contained in:
parent
34a3901501
commit
17c9641b38
20
atari/misc.c
20
atari/misc.c
|
@ -201,6 +201,7 @@ static int proc_running_callback(int pid, void * arg)
|
||||||
data = (struct is_process_running_callback_data *)arg;
|
data = (struct is_process_running_callback_data *)arg;
|
||||||
|
|
||||||
sprintf(fnamepath, "U:\\kern\\%d\\fname", pid);
|
sprintf(fnamepath, "U:\\kern\\%d\\fname", pid);
|
||||||
|
printf("checking: %s\n", fnamepath);
|
||||||
|
|
||||||
fp = fopen(fnamepath, "r");
|
fp = fopen(fnamepath, "r");
|
||||||
if(!fp)
|
if(!fp)
|
||||||
|
@ -208,6 +209,7 @@ static int proc_running_callback(int pid, void * arg)
|
||||||
|
|
||||||
nread = fread(buf, 1, PATH_MAX-1, fp);
|
nread = fread(buf, 1, PATH_MAX-1, fp);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
nread = MIN(PATH_MAX-1, nread);
|
||||||
|
|
||||||
if (nread > 0) {
|
if (nread > 0) {
|
||||||
buf[nread] = 0;
|
buf[nread] = 0;
|
||||||
|
@ -223,8 +225,22 @@ static int proc_running_callback(int pid, void * arg)
|
||||||
lastslash++;
|
lastslash++;
|
||||||
|
|
||||||
if(strcasecmp(lastslash, data->fname)==0){
|
if(strcasecmp(lastslash, data->fname)==0){
|
||||||
data->found = true;
|
/* found process, check status: */
|
||||||
return(-1);
|
sprintf(fnamepath, "U:\\kern\\%d\\status", pid);
|
||||||
|
fp = fopen(fnamepath, "r");
|
||||||
|
if (fp) {
|
||||||
|
nread = fread(buf, 1, PATH_MAX-1, fp);
|
||||||
|
fclose(fp);
|
||||||
|
if (nread>0) {
|
||||||
|
nread = MIN(PATH_MAX-1,nread);
|
||||||
|
}
|
||||||
|
buf[nread] = 0;
|
||||||
|
if (strstr(buf, "zombie")==NULL) {
|
||||||
|
data->found = true;
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(0);
|
return(0);
|
||||||
|
|
Loading…
Reference in New Issue