Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision ecb08b78

Von Moritz Bunkus vor etwa 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
10 10

  
11 11
use File::Slurp;
12 12
use File::Spec::Functions qw(:ALL);
13
use File::Temp qw(tempfile);
13 14

  
14 15
use SL::System::Process;
15 16

  
......
74 75
sub _run_script_command {
75 76
  my ($self, $command) = @_;
76 77

  
77
  my $exe = catfile(catdir(SL::System::Process->exe_dir, 'scripts'), 'task_server.pl');
78
  $self->last_command_output(`${exe} ${command}`);
78
  my ($fh, $file_name) = tempfile();
79
  my $exe              = catfile(catdir(SL::System::Process->exe_dir, 'scripts'), 'task_server.pl');
80

  
81
  system "${exe} ${command} >> ${file_name} 2>&1";
82

  
83
  $fh->close;
84

  
85
  $self->last_command_output(read_file($file_name));
79 86

  
80 87
  return $? == 0 ? 1 : undef;
81 88
}

Auch abrufbar als: Unified diff