/* $OpenXM: OpenXM/src/kxx/ox100start.c,v 1.9 2020/10/07 07:47:23 takayama Exp $ */ /* Moved from misc-2003/07/cygwin/test.c */ #include #include #include #include #include #include #include #include #include #include #include "ox_pathfinder.h" #include "mysig.h" static void usage(void); static int forkExec(char **argv); void *sGC_malloc(int size) { return ((void *)malloc(size)); } int Quiet = 0; static int EngineLogToStdout = 0; extern char **environ; void main(int argc,char *argv[]) { char *s; char s2[1024]; char buf[1024]; FILE *fp; char **aaa; char **eee; int i; char *serverName; /* printf("ostype=%s\n",getOStypes()); printf("OpenXM_HOME=%s\n",getOpenXM_HOME()); printf("sm lib =%s\n",get_sm1_lib_path()); printf("k0 lib =%s\n",get_k0_lib_path()); printf("ox_asir =%s\n",get_ox_asir_path()); */ ox_pathfinderVerbose(1); /* Initialize parameters */ serverName = NULL; aaa = NULL; for (i=1 ; i 0) Myforkcp--; } } mysignal(SIGCHLD,myforkwait); } static void usage() { fprintf(stderr,"ox100start -oxserver xxx [-e args]\n"); fprintf(stderr,"Examples: \n"); fprintf(stderr," ox100start -oxserver bin/ox_sm1 -e -reverse -data 3010 --control 3012 -pass 1121343432434 \n"); fprintf(stderr," ox100start -nox -engineLogToStdout -oxserver bin/ox_sm1 -e -data 3010 \n"); } static int forkExec(char **argv) { int pid; char **eee; int m; m = 0; if (argv == NULL) { fprintf(stderr,"Cannot fork and exec.\n"); return -1; } if ((pid = fork()) > 0) { if (m&2) { /* Do not call singal to turn around a trouble on cygwin. BUG. */ }else{ mysignal(SIGCHLD,myforkwait); /* to kill Zombie */ } Myforkchildren[Myforkcp++] = pid; if (Myforkcp >= MYFORKCP_SIZE-1) { fprintf(stderr,"Child process table is full.\n"); Myforkcp = 0; } }else{ /* close the specified files */ if (m&1) { sigset_t sss; sigemptyset(&sss); sigaddset(&sss,SIGINT); sigprocmask(SIG_BLOCK,&sss,NULL); } if (ox_pathfinderNoX(-1) && (!EngineLogToStdout)) { FILE *null; null = fopen("/dev/null","wb"); dup2(fileno(null),1); dup2(fileno(null),2); } /* { int i; i = 0; fprintf(stderr,"argv-----------\n"); while (argv[i] != NULL) { fprintf(stderr,"%s ",argv[i++]); } fprintf(stderr,"\n"); i = 0; fprintf(stderr,"environ-----------\n"); while (environ[i] != NULL) { fprintf(stderr,"%s ",environ[i++]); } fprintf(stderr,"\n"); } */ execve(argv[0],argv,environ); /* This place will never be reached unless execv fails. */ fprintf(stderr,"forkExec fails: "); } }