Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AnyEvent::Run(3)      User Contributed Perl Documentation     AnyEvent::Run(3)

NAME
       AnyEvent::Run - Run a process or	coderef	asynchronously

SYNOPSIS
	   use AnyEvent;
	   use AnyEvent::Run;

	   my $cv = AnyEvent->condvar;

	   my $handle =	AnyEvent::Run->new(
	       cmd	=> [ 'ls', '-l'	],
	       priority	=> 19,		    # optional nice value
	       on_read	=> sub {
		   my $handle =	shift;
		   ...
		   $cv->send;
	       },
	       on_error	 => sub	{
		   my ($handle,	$fatal,	$msg) =	@_;
		   ...
		   $cv->send;
	       },
	   );

	   # Send data to the process's	STDIN
	   $handle->push_write($data);

	   $cv->recv;

DESCRIPTION
       AnyEvent::Run is	a subclass of AnyEvent::Handle,	so reading it's
       documentation first is recommended.

       This module is designed to run a	child process, using an	explicit
       command line, a class name, or a	coderef.  It should work on any	Unix
       system as well as Windows 2000 and higher.

       For an alternate	way of running a coderef in a forked process using
       AnyEvent, see AnyEvent::Util's fork_call	function.

METHODS
   $handle = new( %args	)
       Creates and returns a new AnyEvent::Run object.	The process forks and
       either execs (Unix) or launches a new process (Windows).	 If using a
       coderef,	the coderef is run in the forked process.

       The process's STDIN, STDOUT, and	STDERR and connected to	$handle->{fh}.

       The child process is automatically killed if the	AnyEvent::Run object
       goes out	of scope.

       See AnyEvent::Handle for	additional parameters for new().

       cmd Required. Takes a string, an	arrayref, or a code reference.

	       cmd => 'ps ax'
	       cmd => [	'ps, 'ax' ]
	       cmd => sub { print "Hi, I'm $$\n" }

	   When	launching an external command, using an	arrayref is
	   recommended so that your command is properly	escaped.

	   Take	care when using	coderefs on Windows, as	your code will run in
	   a thread.  Avoid using modules that are not thread-safe.

       args
	   Optional. Arrayref of arguments to be passed	to cmd.

       class
	   Optional. Class name	to be loaded in	the child process. Using this
	   method is a more efficient way to execute Perl code than by using a
	   coderef. This will exec a new Perl interpreter, loading only	this
	   class, and will call	that class's main() method.

	       my $handle = AnyEvent::Run->new(
		   class => 'My::SubProcess',
		   ...
	       );

	       package My::SubProcess;

	       sub main	{
		   print "Hi, I'm $$\n";
	       }

	       1;

       method
	   Optional. When using	class, instead of calling main(), the given
	   method will be called.

       priority
	   Optional. A numeric value between -19 and 19. On Unix, you must be
	   root	to change the priority to a value less than 0.	On Windows,
	   these values	are mapped to the following priority levels:

	       -19 to -16  High
	       -15 to  -6  Above Normal
	       -5  to	4  Normal
		5  to  14  Below Normal
	       15  to  19  Idle

BUGS
       AnyEvent::Handle's linger option	is not supported.

       Open file descriptors are not closed under Windows after	forking.

THANKS
       This module was based in	part on	POE::Wheel::Run	and
       POE::Wheel::Run::Win32.

SEE ALSO
       AnyEvent	AnyEvent::Handle AnyEvent::Util

AUTHOR
       Andy Grundman, <andy@hybridized.org>

COPYRIGHT AND LICENSE
       This program is free software, you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.32.0			  2009-07-21		      AnyEvent::Run(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | BUGS | THANKS | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=AnyEvent::Run&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help