Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ecb08b78

Von Moritz Bunkus vor mehr als 12 Jahren hinzugefügt

  • ID ecb08b787b2d44e2158c4b0f47d3989bbfe11429
  • Vorgänger a63be3ad
  • Nachfolger f815dda9

Task-Server-Control: Auch STDERR vom ausgeführten Kommando (start/stop) auslesen

Das geht leider nicht mehr mit

my $output = `$exe 2>&1`;

weil das nach dem Forken irgendwie einen Zombie-Prozess hinterlässt
und Perl aus dem `...` nicht zurückkehrt. Also die Variante mit
Umleitung in temporäre Datei wählen.

Unterschiede anzeigen:

SL/System/TaskServer.pm
use File::Slurp;
use File::Spec::Functions qw(:ALL);
use File::Temp qw(tempfile);
use SL::System::Process;
......
sub _run_script_command {
my ($self, $command) = @_;
my $exe = catfile(catdir(SL::System::Process->exe_dir, 'scripts'), 'task_server.pl');
$self->last_command_output(`${exe} ${command}`);
my ($fh, $file_name) = tempfile();
my $exe = catfile(catdir(SL::System::Process->exe_dir, 'scripts'), 'task_server.pl');
system "${exe} ${command} >> ${file_name} 2>&1";
$fh->close;
$self->last_command_output(read_file($file_name));
return $? == 0 ? 1 : undef;
}

Auch abrufbar als: Unified diff