From: Arne Vajhøj [arne@vajhoej.dk] Sent: Tuesday, April 15, 2003 9:16 AM To: Info-VAX@Mvb.Saic.Com Subject: Re: Communication Problem between process and subprocess via mailbox SUBPROC.H --------- void sub_init(); void sub_put(char *line); void sub_wait(int n); int sub_get(char *line,long nb); void sub_end(); SUBPROC.C --------- #include #include #include #include #include #include short chani,chano; #define maxlinlen 256 char *bigbuf[10000]; int wptr = -1; int rptr = -1; long sys$crembx(); long lib$spawn(); long sys$qiow(); long lib$wait(float *t); int sub_help_get(char *line,long nb) { short read = IO$_READVBLK | IO$M_NOW; short iosb[4]; if (sys$qiow(0,chano,read,iosb,0,0,line,nb,0,0,0,0)==SS$_NORMAL) { if (iosb[0]==SS$_NORMAL) { line[iosb[1]] = '\0'; return 1; } else { return 0; } } else { return 0; } } void sub_set_ast(); void sub_ast() { do { wptr++; bigbuf[wptr] = malloc(maxlinlen+1); } while (sub_help_get(bigbuf[wptr],maxlinlen)); wptr--; sub_set_ast(); return; } void sub_set_ast() { short setatt = IO$_SETMODE | IO$M_WRTATTN; sys$qiow(0,chano,setatt,0,0,0,sub_ast,0,0,0,0,0); return; } void sub_init() { long messiz = 256; long bufsiz = 4096; long flags = CLI$M_NOWAIT; $DESCRIPTOR(inpdes,"SUB_INPUT_MBX"); $DESCRIPTOR(outpdes,"SUB_OUTPUT_MBX"); sys$crembx(0,&chani,messiz,bufsiz,0,0,&inpdes); sys$crembx(0,&chano,messiz,bufsiz,0,0,&outpdes); sub_set_ast(); lib$spawn(0,&inpdes,&outpdes,&flags,0,0,0,0,0,0,0,0,0,0); return; } void sub_put(char *line) { short write = IO$_WRITEVBLK | IO$M_NOW; sys$qiow(0,chani,write,0,0,0,line,strlen(line),0,0,0,0); return; } void sub_wait(int n) { float t; t = n; lib$wait(&t); return; } int sub_get(char *line,long nb) { if (rptr