On Fri, 13 Jun 2008 14:59:54 +0200, Hunkeler Peter (KIUK 3) wrote:

>>[snip]... This is probably since they can't just re-load all
>>the modules, since source library info isn't saved.
>
>fork() processing must not load the modules again, even if it knew
>where they've been loaded from. fork(), by definition, creates a
>1:1 copy of the process (address space). Programs might have changed
>intenal fields and the new process might depend on that very value.
>
If the module is refreshable, and marked as such (and REFRPROT is
enabled), internal fields can't be changed.  The original specification
of "refreshable".

>(The "1:1 copy" above applies to the UNIX part, only. MVS "things" like
>data control blocks are not copied over).
>
So what happens if a program with a DCB open for INPUT performs a
fork()?  Does fork() leave a blank space where the DCB was?  What
happens if the child performs a READ?  Something ought to fail
because the parent may have scratched the data set and the child
would be reading unallocated DASD tracks.  Repeat the question
with OUTPUT in place of INPUT.  If the parent has a descriptor of
a UNIX file, the child inherits it with no problem: the disk
blocks are not freed until some process unlinks the file and
both the parent and child close it.  (But what if YA process
opens it with O_TRUNC?)

-- gil

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to