Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Inter process communication

Reply
Thread Tools

Inter process communication

 
 
Peter Lom
Guest
Posts: n/a
 
      08-20-2008
Hi,

please advise on the following.

Need to implement execution of tasks in serial and parallel mode
together with daemons within Ruby.

Scenario:
The main program starts with a fork - it executes in the child process
some background programs in the strict sequence - need to leave this
child process running as a daemon.
When the last program announces that it finished init stage, it writes a
notice to the stdout (I cannot modify this notice but I know what is
it);
- how to advise the parent that all is ready?

I use Program.detach to continue in the main - all is OK but I don't
know when the last daemon finishes init and wrote that notice (use of
sleep works but is ugly)


When the parent knows all is ready, it should start launching new set of
tasks in serial or parallel mode.

I execute serial tasks in a separate thread and all works OK.

How can the parent know if parallel tasks finished?
Do I need semaphores/mutexes etc to organise this?


Many thanks
Peter
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Michael Morin
Guest
Posts: n/a
 
      08-20-2008
Peter Lom wrote:
> Hi,
>
> please advise on the following.
>
> Need to implement execution of tasks in serial and parallel mode
> together with daemons within Ruby.
>
> Scenario:
> The main program starts with a fork - it executes in the child process
> some background programs in the strict sequence - need to leave this
> child process running as a daemon.
> When the last program announces that it finished init stage, it writes a
> notice to the stdout (I cannot modify this notice but I know what is
> it);
> - how to advise the parent that all is ready?
>
> I use Program.detach to continue in the main - all is OK but I don't
> know when the last daemon finishes init and wrote that notice (use of
> sleep works but is ugly)
>
>
> When the parent knows all is ready, it should start launching new set of
> tasks in serial or parallel mode.
>
> I execute serial tasks in a separate thread and all works OK.
>
> How can the parent know if parallel tasks finished?
> Do I need semaphores/mutexes etc to organise this?
>
>
> Many thanks
> Peter


You have a few options.

You can use popen to run the daemon script, which will puts a message
that the parent program will gets. The popen method uses fork/exec
internally, so it will be in a separate process.

You can fork another process and use UNIX signals to signal the parent
it's ready. I'm not sure if Ruby can use the pause syscall and it will
probably only work on *nix.

Run the commands and then fork into parent program and daemon. This
means you won't need another mechanism to notify the parent the commands
have been run at all.

--
Michael Morin
Guide to Ruby
http://ruby.about.com/
Become an About.com Guide: beaguide.about.com
About.com is part of the New York Times Company

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Best way for inter-process communication in Python Hugo Ferreira Python 0 12-04-2006 05:24 PM
Re: Sockets for inter-process communication Frank D. Greco Java 1 06-30-2003 03:47 AM
Re: Sockets for inter-process communication Sudsy Java 0 06-28-2003 04:24 AM
Re: Sockets for inter-process communication Jon A. Cruz Java 0 06-28-2003 03:33 AM
Re: Sockets for inter-process communication Knute Johnson Java 0 06-27-2003 10:00 PM



Advertisments