Cross Reference: Open2.t
xref
: /
osnet-11
/
usr
/
src
/
cmd
/
perl
/
5.8.4
/
distrib
/
lib
/
IPC
/
Open2.t
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
Open2.t revision 1
1
N/A
#!./perl -w
1
N/A
1
N/A
BEGIN
{
1
N/A
chdir
't'
if
-d
't'
;
1
N/A
@
INC
=
'../lib'
;
1
N/A
require
Config
;
import
Config
;
1
N/A
if
(!
$Config
{
'd_fork'
}
1
N/A
# open2/3 supported on win32 (but not Borland due to CRT bugs)
1
N/A
&&
(
($^O
ne
'MSWin32'
&& $^O
ne
'NetWare'
)
||
$Config
{
'cc'
} =~ /^
bcc
/i)
)
1
N/A
{
1
N/A
print
"1..0\n"
;
1
N/A
exit
0
;
1
N/A
}
1
N/A
# make warnings fatal
1
N/A
$SIG
{
__WARN__
} =
sub
{
die
@_ };
1
N/A
}
1
N/A
1
N/A
use
strict
;
1
N/A
use
IO
::
Handle
;
1
N/A
use
IPC
::
Open2
;
1
N/A
#require '
open2.pl
'; use subs 'open2';
1
N/A
1
N/A
my
$perl
=
'./perl'
;
1
N/A
1
N/A
sub
ok
{
1
N/A
my
($n,
$result
,
$info
)
= @_;
1
N/A
if
(
$result
)
{
1
N/A
print
"ok $n\n"
;
1
N/A
}
1
N/A
else
{
1
N/A
print
"not ok $n\n"
;
1
N/A
print
"#
$info
\n"
if
$info
;
1
N/A
}
1
N/A
}
1
N/A
1
N/A
sub
cmd_line
{
1
N/A
if
($^O
eq
'MSWin32'
|| $^O
eq
'NetWare'
)
{
1
N/A
return
qq
/
"$_[0]"
/;
1
N/A
}
1
N/A
else
{
1
N/A
return
$_[
0
];
1
N/A
}
1
N/A
}
1
N/A
1
N/A
my
(
$pid
,
$reaped_pid
)
;
1
N/A
STDOUT
->
autoflush
;
1
N/A
STDERR
->
autoflush
;
1
N/A
1
N/A
print
"1..7\n"
;
1
N/A
1
N/A
ok
1
,
$pid
=
open2
'READ'
,
'WRITE'
,
$perl
,
'-e'
,
1
N/A
cmd_line
(
'print scalar <STDIN>'
)
;
1
N/A
ok
2
,
print
WRITE
"hi kid\n"
;
1
N/A
ok
3
, <
READ
> =~ /^
hi
kid
\r?\n$/;
1
N/A
ok
4
,
close
(
WRITE
)
, $!;
1
N/A
ok
5
,
close
(
READ
)
, $!;
1
N/A
$reaped_pid
=
waitpid
$pid
,
0
;
1
N/A
ok
6
,
$reaped_pid
==
$pid
,
$reaped_pid
;
1
N/A
ok
7
, $? ==
0
, $?;