Child man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

Child(3)	      User Contributed Perl Documentation	      Child(3)

NAME
       Child - Object oriented simple interface to fork()

DESCRIPTION
       Fork is too low level, and difficult to manage. Often people forget to
       exit at the end, reap their children, and check exit status. The
       problem is the low level functions provided to do these things. Throw
       in pipes for IPC and you just have a pile of things nobody wants to
       think about.

       Child is an Object Oriented interface to fork. It provides a clean way
       to start a child process, and manage it afterwords. It provides methods
       for running, waiting, killing, checking, and even communicating with a
       child process.

       NOTE: kill() is unpredictable on windows, strawberry perl sends the
       kill signal to the parent as well as the child.

SYNOPSIS
   BASIC
	   use Child;

	   my $child = Child->new(sub {
	       my ( $parent ) = @_;
	       ....
	       # exit() is called for you at the end.
	   });
	   my $proc = $child->start

	   # Kill the child if it is not done
	   $proc->complete || $proc->kill(9);

	   $proc->wait; #blocking

   IPC
	   # Build with IPC
	   my $child2 = Child->new(sub {
	       my $self = shift;
	       $self->say("message1");
	       $self->say("message2");
	       my $reply = $self->read(1);
	   }, pipe => 1 );
	   my $proc2 = $child2->start;

	   # Read (blocking)
	   my $message1 = $proc2->read();
	   my $message2 = $proc2->read();

	   $proc2->say("reply");

   SHORTCUT
       Child can export the child() shortcut function when requested. This
       function creates and starts the child process in one action.

	   use Child qw/child/;

	   my $proc = child {
	       my $parent = shift;
	       ...
	   };

       You can also request IPC:

	   use Child qw/child/;

	   my $child = child {
	       my $parent = shift;
	       ...
	   } pipe => 1;

DETAILS
       First you define a child, you do this by constructing a Child object.
       Defining a child does not start a new process, it is just the way to
       define what the new process will look like. Once you have defined the
       child you can start the process by calling $child->start(). One child
       object can start as many processes as you like.

       When you start a child an Child::Link::Proc object is returned. This
       object provides multiple useful methods for interacting with your
       process. Within the process itself an Child::Link::Parent is created
       and passed as the only parameter to the function used to define the
       child. The parent object is how the child interacts with its parent.

PROCESS MANAGEMENT METHODS
       @procs = Child->all_procs()
	   Get a list of all the processes that have been started. This list
	   is cleared in processes when they are started; that is a child will
	   not list its siblings.

       @pids = Child->all_proc_pids()
	   Get a list of all the pids of processes that have been started.

       Child->wait_all()
	   Call wait() on all processes.

EXPORTS
       $proc = child( sub { ... } )
       $proc = child { ... }
       $proc = child( sub { ... }, $plugin, @data )
       $proc = child { ... } $plugin => @data
	   Create and start a process in one action.

CONSTRUCTOR
       $child = Child->new( sub { ... } )
       $child = Child->new( sub { ... }, $plugin, @plugin_data )
	   Create a new Child object. Does not start the child.

OBJECT METHODS
       $proc = $child->start()
	   Start the child process.

SEE ALSO
       Child::Link::Proc
	   The proc object that is returned by $child->start()

       Child::Link::Parent
	   The parent object that is provided as the argumunt to the function
	   used to define the child.

       Child::Link::IPC
	   The base class for IPC plugin link objects. This provides the IPC
	   methods.

HISTORY
       Most of this was part of Parrallel::Runner intended for use in the
       Fennec project. Fennec is being broken into multiple parts, this is one
       such part.

FENNEC PROJECT
       This module is part of the Fennec project. See Fennec for more details.
       Fennec is a project to develop an extendable and powerful testing
       framework.  Together the tools that make up the Fennec framework
       provide a potent testing environment.

       The tools provided by Fennec are also useful on their own. Sometimes a
       tool created for Fennec is useful outside the greator framework. Such
       tools are turned into their own projects. This is one such project.

       Fennec - The core framework
	 The primary Fennec project that ties them all together.

AUTHORS
       Chad Granum exodist7@gmail.com

COPYRIGHT
       Copyright (C) 2010 Chad Granum

       Child is free software; Standard perl licence.

       Child is distributed in the hope that it will be useful, but WITHOUT
       ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       FITNESS FOR A PARTICULAR PURPOSE.  See the license for more details.

perl v5.14.1			  2011-08-14			      Child(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net