version 1.15, 2003/12/04 05:27:19 |
version 1.16, 2003/12/04 06:29:21 |
|
|
/* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.14 2003/12/04 03:17:33 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.15 2003/12/04 05:27:19 takayama Exp $ */ |
/* Moved from misc-2003/07/cygwin/test.c */ |
/* Moved from misc-2003/07/cygwin/test.c */ |
|
|
#include <stdio.h> |
#include <stdio.h> |
Line 141 int oxForkExec(char **argv) { |
|
Line 141 int oxForkExec(char **argv) { |
|
fprintf(stderr,"Cannot fork and exec.\n"); return -1; |
fprintf(stderr,"Cannot fork and exec.\n"); return -1; |
} |
} |
if ((pid = fork()) > 0) { |
if ((pid = fork()) > 0) { |
oxResetRedirect(); |
oxResetRedirect(); |
if (m&2) { |
if (m&2) { |
/* Do not call singal to turn around a trouble on cygwin. BUG. */ |
/* Do not call singal to turn around a trouble on cygwin. BUG. */ |
}else{ |
}else{ |
Line 186 int oxForkExecBlocked(char **argv) { |
|
Line 186 int oxForkExecBlocked(char **argv) { |
|
fprintf(stderr,"Cannot fork and exec.\n"); return -1; |
fprintf(stderr,"Cannot fork and exec.\n"); return -1; |
} |
} |
if ((pid = fork()) > 0) { |
if ((pid = fork()) > 0) { |
oxResetRedirect(); |
oxResetRedirect(); |
Myforkchildren[Myforkcp++] = pid; |
Myforkchildren[Myforkcp++] = pid; |
if (Myforkcp >= MYFORKCP_SIZE-1) { |
if (Myforkcp >= MYFORKCP_SIZE-1) { |
fprintf(stderr,"Child process table is full.\n"); |
fprintf(stderr,"Child process table is full.\n"); |
Line 195 int oxForkExecBlocked(char **argv) { |
|
Line 195 int oxForkExecBlocked(char **argv) { |
|
if (waitpid(pid,&status,0) < 0) { /* blocked */ |
if (waitpid(pid,&status,0) < 0) { /* blocked */ |
perror("waitpid"); |
perror("waitpid"); |
} |
} |
|
Myforkcp--; |
return status; |
return status; |
}else{ |
}else{ |
/* close the specified files */ |
/* close the specified files */ |
Line 1098 int oxDeleteFile(char *fname) { |
|
Line 1099 int oxDeleteFile(char *fname) { |
|
}else{ |
}else{ |
return(-1); |
return(-1); |
} |
} |
|
} |
|
|
|
/* This function just kills processes, so if there is a process which |
|
uses ox protocol, it is not relevant to use this functions. |
|
*/ |
|
int oxKillAll(void) { |
|
int i; |
|
int pid; |
|
int status; |
|
for (i=0; i<Myforkcp; i++) { |
|
pid = Myforkchildren[i]; |
|
signal(SIGKILL,myforkwait); |
|
} |
|
Myforkcp = 0; |
|
return(0); |
} |
} |