Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

process handling

Posted on 2002-05-09
5
Medium Priority
?
175 Views
Last Modified: 2010-03-05
I have a perl cgi script which executes a program using `` what I would like to do, is start the process and then immediatly send the response back to the user, without waiting for the process to finish.

In other words: the user makes an http request, the script starts a process, sends back the response, and some time later the process finishes (without anyone really knowing about it).

How can I do this?

thanks
0
Comment
Question by:_D_
  • 3
  • 2
5 Comments
 
LVL 1

Expert Comment

by:japhyRPI
ID: 6999091
You could merely append an ampersand (&) to the end of the system call:

  `/some/process arg1 arg2 &`;

0
 
LVL 8

Accepted Solution

by:
jhurst earned 800 total points
ID: 7000311
This is exactly what fork() is for.

$x=fork();  #make two copies of the running process
if ($x > 0) { #the maker of the copy gets the
              #pid of the new one
  print ...   #whatever you want to tell the user
  close(STDOUT); #ensure that the web server knows
  }           #we are done
else {
  #we are the second copy
  ... do whatever he wants to do, no one will know
  }

0
 
LVL 8

Expert Comment

by:jhurst
ID: 7001970
In the case where the other process is as described by japhyrpi I somewhat agree that the & method works, if the OS is one that supports the & method.  

The things I do not like about this is that: 1) it does not take advantage of multi-threading where implemented, 2) it is OS specific, 3) it does not allow the rest of the work to be done in the same perl script.

But, I do agree it will work with these restrictions.
0
 
LVL 1

Expert Comment

by:japhyRPI
ID: 7002022
jhurst - well, fork() is OS dependent too.  ActivePerl has only recently provided support for it.
0
 
LVL 8

Expert Comment

by:jhurst
ID: 7002302
correct.  However, fork() is defined in perl, the & is not.  Also, most decent multi-tasking operating systems implement fork() therefore it makes its way into perl there too.  Now, MS products are of course a different issue.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I've just discovered very important differences between Windows an Unix formats in Perl,at least 5.xx.. MOST IMPORTANT: Use Unix file format while saving Your script. otherwise it will have ^M s or smth likely weird in the EOL, Then DO NOT use m…
On Microsoft Windows, if  when you click or type the name of a .pl file, you get an error "is not recognized as an internal or external command, operable program or batch file", then this means you do not have the .pl file extension associated with …
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
Six Sigma Control Plans

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question