perl - understand process status and continue the code execution


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting perl - understand process status and continue the code execution
# 1  
Old 01-03-2008
perl - understand process status and continue the code execution

Hello, I need advice on how to check if started processes are finished in perl, here's explanation :
OS is RHEL 4, perl -v = "This is perl, v5.8.0 built for i386-linux-thread-multi"

The logic of the script :
Code:
#!/usr/bin/perl

use warnings;
$param1 = $ARGV[0];
$param2 = $ARGV[1];
$param3 = $ARGV[2];

sub Help
{ help message goes here }
# some other subroutines follow

# main 
if (@ARGV < 3) {
        &Help; exit 1;
}
&cleanUp(); # pre-defined sub is being invoked here, stuff like $| = 1;
if ( $vars eq 'something' ) {
        &call_some_sub;
        } else {
        &call_another_sub;
}

Pretty simple, given that I'm not so good at perl, I wrote that for test.
So, what I'm basically doing is starting file transfers via ssh or other protocol with custom binary, and I need to check somehow that the transfers are done and then continue with other code executiom, in my case that will be another subroutine call, doing some static stuff. Quering the OS with "system ("pgrep pattern") every 1 second doesn't seem good, so I'm thinking of using fork() in order to trap the transfers' end. If that's the right way, I guess it should look like :
Code:
&start_transfers;
# somehow understand that they are done
&static_stuff_sub;

I've read the documentation for fork(); but I'm not sure if that's the right way. I guess my issue is that the file size vary from 10kb to 10Gb sometimes and I can't predict time to wait (using sleep for example). I'll appreciate any pointers.
# 2  
Old 01-03-2008
# 3  
Old 01-04-2008
Thanks cbkihong, I saw that already, this would probably require fork(); but it won't work for me, at least in the way I wanted, I have arbitrary number of processes started via system command, and I can't use their PIDs, plus the execution of the subroutine call itself is successful, so I cannot do even :
Code:
wait &sub-call;
    if ($? == 0) {
        # do something else;
}

I think I'll wait for STDIN interaction while "chomp"-ing the input, this should ensure that processes / SSH transfers in the background are done, assuming someone is looking at the external log file in real time.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

EFI disk labeling / understand the parition table / sectors not continue

Hi all, I have a EFI disk and it is use in zfs pool. partition> p Volume: rpool Current partition table (original): Total disk sectors available: 1172107117 + 16384 (reserved sectors) Part Tag Flag First Sector Size Last Sector 0 usr wm ... (8 Replies)
Discussion started by: javanoob
8 Replies

2. UNIX for Beginners Questions & Answers

Xargs -P command execution status

Hi, I am working on a file copier utility where I have written the copy commands to a batch file e.g. file_copier.bat which i pass to xargs command as follows. cat file_copier.bat | xargs -n 1 -P 40 I also want to record the copy command status of each file/command in the form "command... (1 Reply)
Discussion started by: ankur singh
1 Replies

3. Programming

Help needed to Spawn Shell on Python and Continue Execution

def gob(url): print "\n\t Running gobuster on target." params = " -e -s '307,200,204,301,302' -t 20 -u " + url + " >> /tmp/%s/gobuster.txt" % (ip) os.system("xterm -e bash -c "tail -f /tmp/%/gobuster.txt"") for i in bflist: dirbf = "gobuster -w " + i... (3 Replies)
Discussion started by: alvinoo
3 Replies

4. Shell Programming and Scripting

Continue Execution Based On List

Hi all. I have a script like this function check_filesize { filesize_1="$(ls -la "$1"|awk '{ print $5 }')" sleep 123 filesize_2="$(ls -la "$1"|awk '{ print $5 }')" if then echo "OK" else echo "NOT OK" sleep 1234 check_filesize $1 fi } function check_TR { chk="$(tail -1 $1|grep... (5 Replies)
Discussion started by: aimy
5 Replies

5. Shell Programming and Scripting

how to continue shell script execution process without control going to pompt?

Hi Friends, Iam invoking another shell script to create B2k_session_id from my shell script.It is properly creating B2k_session_id and after creation control is coming out from the script and going to command prompt.The lines which are after the exectrusteduser.com sh.com are not executing..may... (5 Replies)
Discussion started by: vadlamudy
5 Replies

6. Programming

perl: code execution via specially crafted regular expression. It it possible ?

Hello, I'm writing script to parse configuration files in perl. I would like to enable regular expressions as part of configuration file. I.e I would like to enable the users to select files that will be proceeded by the script using regex. I was wondering, is it possible for the user to execute... (4 Replies)
Discussion started by: +Yan
4 Replies

7. UNIX for Dummies Questions & Answers

UNIX command to skip any warning messages and continue job execution

Hello All, Good day! This is my first UNIX post. :D Anyways, I would like to seek help from you guys if you know of any UNIX command that will skip a warning message once it is encountered but continue to run the execution. Ok here's the situation in general: An encypted file is sent to... (2 Replies)
Discussion started by: jennah_rekka
2 Replies

8. Shell Programming and Scripting

continue line in perl script

HI , I am new to the perl , I am using a if condition and in that if condition i am checking 7 variables value. so it continue to second line .And if i user "\" for the continue line it showing error. Example : if(a >9 || b>8 || c> 10 \ d > 11) { print(); } The above statement is... (3 Replies)
Discussion started by: julirani
3 Replies

9. UNIX for Dummies Questions & Answers

Process launched by user who logs out, continue running ?

Lets say a user starts a process (either a shell script or a Perl script) and before that process finishes, he logs out (either intentionaly or network problems or ...), does the process continu running ? Default shell is Korn. This is because at my job (being trained), there are tasks to run... (2 Replies)
Discussion started by: Browser_ice
2 Replies

10. Shell Programming and Scripting

Status code of last command execution

Hello people, I am using KSH and inside my script I do a cksum and check the status code to see whether the command sucessfully. Here even though the cksum fails due to file not existing the status returned is still 0 because the awk command worked fine. How do I capture just the status of the... (1 Reply)
Discussion started by: tipsy
1 Replies
Login or Register to Ask a Question