Whats Missing?

Richard O'Keefe ok at cs.mu.oz.au
Sat Sep 23 20:11:04 AEST 1989


In article <4438 at ncar.ucar.edu>, morreale at bierstadt.ucar.edu (Peter Morreale) writes:
>     Users at this site (COS) are heavily dependent on Fortran-callable 
>     JCL for re-start capability.  Rolling out a 5+MW job to do an
>     " IERR=ISHELL('assign <args> ')" is an unacceptable solution.
>     (Fortran-callable JCL also allowed access to our Mass Storage
>     System through local extensions)

I don't know if this works for UNICOS, but I had occasion to use a '*NIX'
where large (128kb!) processes couldn't fork at all.  On that machine,
the fix was to write a wrapper program and a new "shell" function.

The wrapper program is a _small_ program which creates a temporary file,
and then forks a child to do the real job.  The name of the temp file
is passed to the child in the environment array.  The wrapper then goes
to sleep waiting for a signal or the death of the child.  When the child
dies the wrapper deletes the temporary file and exits with the child's
status.

The new "shell" function writes the command to the temporary file, and
signals the wrapper.  It then goes to sleep waiting for a signal.

The wrapper receives the signal, and forks again to execute the command.
(Remember, it's a small program.)  It waits for the command to finish,
then it signals the child and goes back to sleep.

The child receives the wrapper's signal and returns from "shell".



More information about the Comp.unix.cray mailing list