Leser: 1
10 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
use IPC::Open3;
my $pid = open3(\*IN, \*OUT, \*OUT, 'perl', '-c', 'script.pl') or die $!;
close IN;
my $error = <OUT>;
unless ($error =~ /OK/)
{ $error .= $_ while(<OUT>);
close OUT,
croak $error;
}
close OUT;
# wenn ich hierher komme, geht ein Start von script.pl nicht schief
1
2
3
4
5
6
7
8
9
10
11
my $handle;
if(open($handle, "perl -c script.pl 2> stderr |")
{
close($handle);
}
if(-e "stderr")
{
if(open($handle, "stderr"))
...
}
open($handle, "perl -c script.pl 2> stderr |")
open($handle, "perl -c script.pl 2>\&1 |")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sub ProcessStart
{ my ($self, %arg) = @_;
$arg{perl} or croak qq~Argument "perl" ist nicht angegeben.~;
$arg{script} or croak qq~Argument "script" ist nicht angegeben.~;
$arg{arg} ||= [];
ref $arg{arg} eq 'ARRAY' or croak qq~Argument "arg" ist keine Arrayreferenz.~;
my $cmd = "$arg{perl} -c $arg{script}";
open(PIPE, "$cmd 2>\&1 |") # Rückgabewert = Prozeßnummer
or croak qq~"$cmd", Compilierung fehlgeschlagen:\n$!~;
my @line = <PIPE>;
close PIPE;
@line == 1 and $line[0] =~ /OK/
or croak "Compilierung fehlgeschlagen:\n" . join '', @line;
Win32::Process::Create
( my $process,
$arg{perl},
join(' ', 'perl', $arg{script}, @{$arg{arg}}),
0,
DETACHED_PROCESS,
'.',
) or croak Win32::FormatMessage Win32::GetLastError;
my $pid = $process->GetProcessID();
push @line, qq~Prozeß "$$" hat Hintergrundprozeß "$pid" gestartet und wartet auf Ergebnis oder Fehler.~;
return wantarray ? ($process, \@line) : $process;
}
10 Einträge, 1 Seite |