AIX-LVM
view release on metacpan or search on metacpan
lib/AIX/LVM.pm view on Meta::CPAN
306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338sub
_exec_open3
{
my
$self
=
shift
;
my
(
$result
,
$error
);
my
$writer_h
= new IO::Handle;
my
$reader_h
= new IO::Handle;
my
$error_h
= new IO::Handle;
my
$pid
= open3(
$writer_h
,
$reader_h
,
$error_h
,
@_
) or croak
"Not able to open3: $! \n"
;
$reader_h
->autoflush();
$error_h
->autoflush();
my
$selector
= IO::Select->new();
$selector
->add(
$reader_h
,
$error_h
);
## Add the handlers to select call ##
while
(
my
@ready
=
$selector
->can_read ){
foreach
my
$fh
(
@ready
){
if
(
fileno
(
$fh
) ==
fileno
(
$reader_h
) ){
my
$ret
=
$reader_h
->
sysread
(
$_
, 1024);
$result
.=
$_
;
$selector
->remove(
$fh
)
unless
$ret
;
}
if
(
fileno
(
$fh
) ==
fileno
(
$error_h
) ){
my
$ret
=
$error_h
->
sysread
(
$_
, 1024);
$error
.=
$_
;
$selector
->remove(
$fh
)
unless
$ret
;
}
}
}
$reader_h
->autoflush();
$error_h
->autoflush();
waitpid
$pid
, 0;
my
$rc
= $? >> 8;
carp
"Error in executing the command\n"
if
(
$rc
);
return
$result
,
$error
;
}
( run in 1.410 second using v1.01-cache-2.11-cpan-49f99fa48dc )