[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