39 lines
816 B
Perl
39 lines
816 B
Perl
|
package IPC::Open2;
|
||
|
|
||
|
use strict;
|
||
|
our ($VERSION, @ISA, @EXPORT);
|
||
|
|
||
|
require 5.000;
|
||
|
require Exporter;
|
||
|
|
||
|
$VERSION = 1.04;
|
||
|
@ISA = qw(Exporter);
|
||
|
@EXPORT = qw(open2);
|
||
|
|
||
|
# &open2: tom christiansen, <tchrist@convex.com>
|
||
|
#
|
||
|
# usage: $pid = open2('rdr', 'wtr', 'some cmd and args');
|
||
|
# or $pid = open2('rdr', 'wtr', 'some', 'cmd', 'and', 'args');
|
||
|
#
|
||
|
# spawn the given $cmd and connect $rdr for
|
||
|
# reading and $wtr for writing. return pid
|
||
|
# of child, or 0 on failure.
|
||
|
#
|
||
|
# WARNING: this is dangerous, as you may block forever
|
||
|
# unless you are very careful.
|
||
|
#
|
||
|
# $wtr is left unbuffered.
|
||
|
#
|
||
|
# abort program if
|
||
|
# rdr or wtr are null
|
||
|
# a system call fails
|
||
|
|
||
|
require IPC::Open3;
|
||
|
|
||
|
sub open2 {
|
||
|
local $Carp::CarpLevel = $Carp::CarpLevel + 1;
|
||
|
return IPC::Open3::_open3('open2', $_[1], $_[0], '>&STDERR', @_[2 .. $#_]);
|
||
|
}
|
||
|
|
||
|
1
|