On Feb 7, 7:17 am, chas.ow...@gmail.com (Chas. Owens) wrote:
> On Fri, Feb 6, 2009 at 14:31, Ice Man <wjharris...@optonline.net> wrote:
> > Ok ..... so I have to start a program which is written in java.
>
> > #!/local/bin/perl
>
> > my $command = "/aa/bb/c/executable \&";
> > my $ret = 0;
>
> > $ret = `$command`;
>
> > exit $ret;
>
> > The normal behavior of this executable is to list some information but
> > it never returns you to a prompt.  You have to hit the return key to
> > get the shell prompt back.
>
> > The same thing is happening to this program.  Is there a way in perl
> > to pass a return "\n" on the command to be executed that would return
> > a prompt to the program so it does not hang?  I have tried the
> > following:
>
> snip
>
> It sounds like you need IPC::Open2* or IPC::Open3**.  They allow you
> to run an external command and control its STDIN, STDOUT, and, in the
> case of IPC::Open3, STDERR.  Try something like this:
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
>
> use IPC::Open2;
>
> #if this is the child
> my $arg = shift;
> if (defined $arg and $arg eq 'you are the child') {
>         print "I am the child\nwaiting for user to hit enter...\n";
>         <STDIN>;
>         exit;
>
> }
>
> #if this is the parent
> print "I am the parent, getting ready to run the child\n";
> #call myself with the argument "you are the child"
> open2 my $child_stdout, my $child_stdin, $0, "you are the child";
>
> print "child ran, sending return to it now\n";
> #send a return to the child to get it to quit
> print $child_stdin "\n";
>
> #read what it wrote to the stdout
> print "child said:\n", map { "\t$_" } <$child_stdout>;
>
> --
> Chas. Owens
> wonkden.net
> The most important skill a programmer can have is the ability to read.

Excellent !!! This looks like my answer!  Will attempt to implement on
09-Feb [Monday] and let you know.

Thanks for your quick reply!


-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to