[kepler-dev] Combining the CommandLine and Exec actors

Dan Higgins higgins at nceas.ucsb.edu
Fri Jun 24 21:09:35 PDT 2005


Bertram,
    Thank you for reminding me of the '&' option; frankly, I had 
forgotten that possibility. Incidently, the Windows equivalent is 
'start'; i.e.
'start acrobat' in the CommandLine actor will launch acrobat. The Java 
method 'exec' which creates a new process in the Command Line actor 
waits until the process finishes to return in the current 
implementation, but what I forgot is that the process is the commandline 
processor. That process will start a new background process which keeps 
running and then immediately returns when '&' or 'start' is used.
    The problem with this approach is that this secondary process is 
completely independent (i.e. no process id is returned to java as far as 
I can determine). Thus Kepler has no way to reference the background 
process. This is not always a problem. An use that I was thinking of is 
using other applications to display outputs - e.g. showing results in 
some other application such as using Acrobat to display pdf or 
Illustrator to show SVG files. It is somtimes desirable to launch such 
independent processes from within Kepler. (However, getting the results 
of such independent processes back into Kepler might be problematic.)

    Incidently, there is an 'Interactive Exec' actor in Kepler now which 
I created some time ago for an interactive R example. In this case, the 
process launched by java keeps running as a direct subprocess of the 
Kepler java process. (see the InteractiveR.xml workflow.) This didn't 
require any special director (it uses SDF). It keeps R running so that a 
series of commands can be entered using the InteractiveShell actor. In 
this case, the actor can keep track of the direct process launched by 
Interactive Exec because that process is directly executed (rather than 
indirectly through the command processor).

Dan

Bertram Ludaescher wrote:

>Dan, Bilsay et al:
>
>In order to return control immediately w/o waiting for the initiated
>command/subprocess to finish, it should be possible to use "&", at
>least in Unix-style systems, right? 
>
>So the good old 
>	$ myjob & 
>would run myjob in the background. 
>
>But then again, for platform independence it might be better to have a
>parameter to the Cmd-Line actor that determines whether control is
>returned immediately (a la "backgrounding") or after command
>completetion. 
>
>Ptolemy-hackers: 
>
>Are there any directors (or could one conceive variants of the
>existing ones) that are particularly well-suited/well-behaved with
>Command-Line actor instances that return immediately? 
>
>Bertram
>
>Dan Higgins writes:
>..
> > Finally, one option that I don't think we have considered in Exec or 
> > CommandLine is to launch a process and NOT wait for it to complete. 
> > (Currently I think we always use a 'waitFor()' method). This would be 
> > primarily of use for launching completely different applications for 
> > output/display at the end of a Kepler workflow. There are some occasions 
> > when this would be useful.
>...
>  
>




More information about the Kepler-dev mailing list