![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: I have process which spawns a subprocess. The subprocess executes DCL in a forever loop to periodically transfer some files using FTP. The subprocess is spawned by a process calling LIB$SPAWN() with no wait (flags=CLI$M_NOWAIT). If the process exits the image and has nothing else to return to then OpenVMS deletes the subprocess (and the process). If on the other hand the process has a DCL to return to then OpenVMS does not delete the subprocess. However if I then run the program again then I get another but now unwanted subprocess. Is there a way to specify deletion (or forcex) of a subprocess as a result of the master process exiting the image from where the subprocess was created? The flags argument of LIB$SPAWN() does not appear to support this. Maybe because it does not make sense. Thank you very much. The Answer is : The present design is unfortunately flawed, as there is no notification made to the subprocess when the parent process image is run down, and there is no such (transparent) notification mechanism available. Alternative approaches include the use of a pool of server processes, and mechanisms to create, connect to, and to time out the server processes as required. Or the use of a DECnet or IP task-to-task connection to the server process, a connection that -- when broken -- will cause the server process to run itself down. Or the use of other tracking and other communications mechanisms, such as shared memory. Alternatively, find and directly use APIs for the required operations, rather than using DCL. (If such APIs are available. Without specifics of the DCL invoked in the subprocess, this may or may not be feasible.) The existing discussions (159), (1910), (3530), (3531), (3365) and (3791) appear potentially relevent here, you will want to review those discussions. You are quite clearly designing and writing your own application middleware environment. Accordingly, you will also want to evaluate the available commercial alternatives.
|