Title: Message
 
Oh, I see - okay, I just misunderstood what was being demonstrated.  You can't simply call exit at the end of a child execution, however - you must either terminate the parent process or call wait(), waitpid(), etc.   exit() will leave a zombie until the parent waits() for a cleanup.  The easiest way to do that is to add a SIGCHLD handler that calls wait when the signal is raised.
 
Thanks,
Matt

--
Matthew Zito
GridApp Systems
Email: [EMAIL PROTECTED]
Cell: 646-220-3551
Phone: 212-358-8211 x 359
http://www.gridapp.com

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mladen Gogala
Sent: Friday, August 22, 2003 6:14 PM
To: Multiple recipients of list ORACLE-L
Subject: RE: OT:UNIX: Anyway to run this in the background and return to ca

No, I just wanted to demonstrate the fork mechanism in perl. The proper way to handle stuff would be to call exit
at the end of the child process, which would clean things up properly and not leave za zombie lying around.
And yes, "ps -ef" is executed only once, when the SPY handle is open.
 
 
--
Mladen Gogala
Oracle DBA
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Matthew Zito
Sent: Friday, August 22, 2003 5:45 PM
To: Multiple recipients of list ORACLE-L
Subject: RE: OT:UNIX: Anyway to run this in the background and return to ca

 
Errrm - this script doesn't do what I think you're trying to do.  Perl starts, it forks a child process, the parent process "does a bunch of stuff", but the child process only runs ps once. Soooo, you end up with a zombie child process (until the parent is done with its business) and a parent process that is doing all the work.    
 
A better solution would be to reverse the ps and the "doing stuff".  Let the child process do the dirty work and let the parent focus on either generating more children or status monitoring the existing children.  You could use a loop that watches for the existence of a particular pid or has a set condition and add a SIGCHLD handler that will handle cleanup of the child and remove the loop condition.
 
Thanks,
Matt

--
Matthew Zito
GridApp Systems
Email: [EMAIL PROTECTED]
Cell: 646-220-3551
Phone: 212-358-8211 x 359
http://www.gridapp.com

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mladen Gogala
Sent: Friday, August 22, 2003 2:04 PM
To: Multiple recipients of list ORACLE-L
Subject: RE: OT:UNIX: Anyway to run this in the background and return to ca

#!/usr/bin/perl
use strict;
use bytes;
my $pid=0;
if (!defined ($pid=fork())) { die "Problem with cutlery:$!\n"}
elsif ($pid) { print "Do stuff here\n";
               waitpid($pid,0);
               print "Cutlery is back\n";
             }
else {
         open(SPY,"ps -ef|grep sqlplus|");
         while (<SPY>) {    print;}
       }
 
--
Mladen Gogala
Oracle DBA
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED]
Sent: Friday, August 22, 2003 1:25 PM
To: Multiple recipients of list ORACLE-L
Subject: RE:OT:UNIX: Anyway to run this in the background and return to ca


$ORACLE_HOME/bin/sqlplus "/ as sysdba"  << EOD
select ......
exit
EOD
echo "this is a test"
ps -ef|grep sqlplus

I wish to put that into a unix command but at the same time run it in the background and return back to the parent script to do some other stuff?

Anyone done this?

 
Note:
This message is for the named person's use only.  It may contain confidential, proprietary or legally privileged information.  No confidentiality or privilege is waived or lost by any mistransmission.  If you receive this message in error, please immediately delete it and all copies of it from your system, destroy any hard copies of it and notify the sender.  You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. Wang Trading LLC and any of its subsidiaries each reserve the right to monitor all e-mail communications through its networks.  Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorized to state them to be the views of any such entity.
 
 
 
Note:
This message is for the named person's use only.  It may contain confidential, proprietary or legally privileged information.  No confidentiality or privilege is waived or lost by any mistransmission.  If you receive this message in error, please immediately delete it and all copies of it from your system, destroy any hard copies of it and notify the sender.  You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. Wang Trading LLC and any of its subsidiaries each reserve the right to monitor all e-mail communications through its networks.  Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorized to state them to be the views of any such entity.
 
 

Reply via email to