Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re^2: How to close command prompts opened with perl script after execution that script

by snreddy_gopu (Novice)
on Aug 07, 2012 at 04:38 UTC ( #985876=note: print w/ replies, xml ) Need Help??


in reply to Re: How to close command prompts opened with perl script after execution that script
in thread How to close command prompts opened with perl script after execution that script

Thanks ig. It's working fine. I have small doubt. I have opened two command prompts as you mentioned above using perl script. Is it possible to run any commands which are not specified in $cmd variable on opened prompts? I mean to say "First perl script opens a command prompt. Then executes whatever the command in the $cmd varible. Now i want to run one more command on that opened prompt before closing it using $processObj->Kill(0)"


Comment on Re^2: How to close command prompts opened with perl script after execution that script
Re^3: How to close command prompts opened with perl script after execution that script
by ig (Vicar) on Aug 07, 2012 at 05:06 UTC

    That I don't know.

    Several options come to mind:

    • Implement the required functions in Perl so I don't have to call a bunch of other executables
    • Run each command separately (system, backticks or whatever), reading output back into perl, then present the output as appropriate, rather than trying to manage a bunch of separate command windows and processes running cmd.exe
    • Compose a batch file then run it
    • Try to establish a pipe to STDIN of cmd.exe and feed it commands, but then probably need something like IPC3::Open and Expect (but maybe not Expect itself on Windows - I don't know if it works there) and it quickly gets more complicated.

    Having a *nix background, I don't much like the Windows way of doing process management. I find they make simple things, like process management and IPC very hard to do. For example, I still haven't found a simple way to get unbuffered I/O between a parent process and its child, or do anything like what process groups make easy on *nix. Being lazy, I do my best to avoid such issues. But this is my fault - probably not something you should emulate.

      Thanks for your information ig. Is it possible to open duplicate session in unix using Perl?

        I'm not sure what you mean by "duplicate session". You can start multiple processes and communicate with them. See perlipc for some of the options.

      is there any way to capture the output in that newly opened command prompt.
Re^3: How to close command prompts opened with perl script after execution that script
by saraths (Initiate) on Jun 18, 2013 at 11:54 UTC

    $processObj->Kill(0); is not working for me to close the created process object, can anyone help me on this. thanks, Sarath S

      my $cmd = "adb shell cat /proc/kmsg | tee kernel_logs.txt"; print $cmd; my $processObj; Win32::Process::Create( $processObj, "C:/windows/system32/cmd.exe", "cmd.exe /k $cmd", 0, NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE, "." )|| die ErrorReport(); sleep(3); $processObj->Kill(0); this was my code, but after sleep processObj is not getting killed.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://985876]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (11)
As of 2014-07-23 12:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (140 votes), past polls