Autor Thema: Frage zu Blocking.pm und der Funktion BlockingKill  (Gelesen 286 mal)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Frage zu Blocking.pm und der Funktion BlockingKill
« am: 17 September 2018, 11:58:42 »
Hallo Rudi,

Warum wird bei einem Aufruf der Funktion BlockingKill ganz am Ende die Funktion BlockingStart(); aufgerufen?
Dies führt bei meinen Usern dazu das der aufgerufende Unixprozess (gatttool) zwar korrekt beendet wird aber danach sofort wieder gestartet wird und dann in der Prozessliste auf ewig bestehen bleibt.
Ein Test mit auskommentierten Funktionsaufruf BlockingStart() bringt eine zu erwartende Aktion. Der gatttool Prozess bleibt aus der Prozessliste raus und wird mit dem nächsten Aufruf durch mein Modul gestartet.

BlockingKill($)
{
  my $h = shift;

  return if($h->{terminated});

#  if($^O !~ m/Win/) {
    if($h->{pid} && $h->{pid} !~ m/:/ && kill(9, $h->{pid})) {
      my $ll = (defined($h->{loglevel}) ? $h->{loglevel} : 1); # Forum #77057
      Log $ll, "Timeout for $h->{fn} reached, terminated process $h->{pid}";
      $h->{terminated} = 1;
      if($h->{abortFn}) {
        no strict "refs";
        my $ret = &{$h->{abortFn}}($h->{abortArg},
                        "Timeout: process terminated");
        use strict "refs";

      } elsif($h->{finishFn}) {
        no strict "refs";
        my $ret = &{$h->{finishFn}}();
        use strict "refs";

      }
      delete($BC_hash{$h->{bc_pid}});
      InternalTimer(gettimeofday()+1, "BlockingStart", \%BC_hash, 0)
        if(looks_like_number($h->{pid}) && kill(0, $h->{pid})); # Forum #58867
    }
#  }
  BlockingStart();
}




Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19335
Antw:Frage zu Blocking.pm und der Funktion BlockingKill
« Antwort #1 am: 17 September 2018, 13:39:35 »
Zitat
Warum wird bei einem Aufruf der Funktion BlockingKill ganz am Ende die Funktion BlockingStart(); aufgerufen?
Weil danach eine geforkte Instanz weniger am vorhanden ist, und wenn weitere Aufgaben in der Schlange warten (siehe blockingCallMax), dann muessen diese gestartet werden. BlockingStart sollte nichts starten, was nicht in der Warteschlage ist.


Zitat
Ein Test mit auskommentierten Funktionsaufruf BlockingStart() bringt eine zu erwartende Aktion
Im Anhang hast du aber die Kill-Funktionalitaet fuer Windows aktiviert.
BlockingKill funktioniert leider nicht unter Windows, da hier fork von perl nur emuliert wird.

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Antw:Frage zu Blocking.pm und der Funktion BlockingKill
« Antwort #2 am: 17 September 2018, 14:49:05 »
Weil danach eine geforkte Instanz weniger am vorhanden ist, und wenn weitere Aufgaben in der Schlange warten (siehe blockingCallMax), dann muessen diese gestartet werden. BlockingStart sollte nichts starten, was nicht in der Warteschlage ist.

Ok leuchtet ein

Im Anhang hast du aber die Kill-Funktionalitaet fuer Windows aktiviert.
BlockingKill funktioniert leider nicht unter Windows, da hier fork von perl nur emuliert wird.

Ich nicht. Ist aus den original svn Sourcen von vor ein paar Tagen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19335
Antw:Frage zu Blocking.pm und der Funktion BlockingKill
« Antwort #3 am: 17 September 2018, 14:52:59 »
Zitat
Ist aus den original svn Sourcen von vor ein paar Tagen
Sorry, war verwirrt, dann sollte BlockingKill unter Windows doch funktionieren.

Falls du immer noch ein Problem hast, und vermutest, dass es an Blocking.pm liegt, dann bitte etwas zum Nachstellen mir geben.

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16677
Antw:Frage zu Blocking.pm und der Funktion BlockingKill
« Antwort #4 am: 17 September 2018, 16:00:48 »
Sorry, war verwirrt, dann sollte BlockingKill unter Windows doch funktionieren.

Falls du immer noch ein Problem hast, und vermutest, dass es an Blocking.pm liegt, dann bitte etwas zum Nachstellen mir geben.

Wenn ich noch was brauche dann werde ich Dir etwas kurzes zum nachstellen geben. Habe ja selbst das Problem leider nicht. Ist ein User. Danke Dir jedenfalls.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer