[kepler-dev] Combining the CommandLine and Exec actors

Dan Higgins higgins at nceas.ucsb.edu
Mon Jun 27 09:17:05 PDT 2005


Bertram,
    With respect to your last question

"But this happens all within a single firing round, right?"

the answer is 'No'. The Interactive Exec actor fires once for each line of typed input. The output is put on the output port for each line so it can be displayed. The workflow is a loop just like entering commands in a shell. THe actor keeps the process id as an internal variable between firing events. 

Your ideas on getting the id of a background process in Unix are good ones; if only I/we can figure out how to do it for Windows! :-) 

Dan


Bertram Ludaescher wrote:

>Dan Higgins writes:
> > Bertram,
> >     Thank you for reminding me of the '&' option; frankly, I had 
> > forgotten that possibility.
>
>yeah, those good old unix days ;-)
>
>
> >  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.)
>
>BTW, as you probably know, in a Unix shell you can "get back control"
>after sending a job to the background (either with '&' or with C-z
>(suspend) followed by 'bg') with the command 'fg' (foreground). 
>I think a job number might be given as an optional argument..
>Even if you don't "reclaim control", some sort of exit code is
>displayed when the job finishes (if I remember right).
>
>So maybe this functionality could be useful to build into an actor!? 
>
> >     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).
>
>right. But this happens all within a single firing round, right?
>
>Bertram
>
>
> > 
> > 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.
> > >...
> > >  
> > >
>  
>


-- 
*******************************************************************
Dan Higgins                                  higgins at nceas.ucsb.edu
http://www.nceas.ucsb.edu/    Ph: 805-893-5127
National Center for Ecological Analysis and Synthesis (NCEAS) 
Marine Science Building - Room 3405
Santa Barbara, CA 93195
*******************************************************************



More information about the Kepler-dev mailing list