alligator: UNIX - Shell Befehl

Hi zusammen,

ich will via Perl testen ob da ein Prozess auf
einer Datei läuft. Bis jetzt habe ich den Ansatz mit nem Shell-Befehl.

$x = system ("fuser datei.txt");

Aber $x gibt mir ja auch eine 0 wenn kein Prozess läuft.
Er gibt ja nur keine 0 wenn er den
Befehl aus irgendeinem Grund nicht ausführen kann.
Wisst ihr vielleicht wie ich da ein logisches Ergebnis bekomme,
also das ich weiss:
Läuft ein Prozess auf Datei datei.txt = Ja oder Nein.
Wäre für nen Tipp echt dankbar.

GRuß
alligator

  1. Hi,

    ich will via Perl testen ob da ein Prozess auf
    einer Datei läuft. Bis jetzt habe ich den Ansatz mit nem Shell-Befehl.

    $x = system ("fuser datei.txt");

    schau Dir mal in

    perldoc -f system

    an, was diese Funktion für eine Rückgabe liefert. Lies außerdem

    perldoc -f flock
    perldoc perlopentut

    und

    perldoc perlstyle

    zum Thema, wo bei Funktionsaufrufen Klammern gesetzt werden sollten.

    Wäre für nen Tipp echt dankbar.

    perldoc perlfunc "Functions for processes and process groups"

    Cheatah

    1. Wäre für nen Tipp echt dankbar.

      perldoc perlfunc "Functions for processes and process groups"

      Cheatah

      HI,

      ehrlichgesagt hab ich da nix gefunden was mich weiterbringt...

      Mein neuer Lösungsansatz ist so:

      open(STATUS, "fuser catalina.out |");
      @test = <STATUS>;
      foreach (@test)
      {
      print "$_ \n";

      }
      close STATUS;

      Und dann hab ich ja in $_ die PID, wenn es ein gibt und falls nicht, dann ist
      $_ leer. So würde es doch klappen oder ist das zu unsauber bzw. hat jmd. ne besser
      Lösung ?

      Gruß
      alligator

      1. Hi,

        perldoc perlfunc "Functions for processes and process groups"

        ehrlichgesagt hab ich da nix gefunden was mich weiterbringt...

        warum nicht?

        open(STATUS, "fuser catalina.out |");

        Eieiei, nun, warum nicht.

        @test = <STATUS>;

        perldoc -f my
        perldoc perlrun, -w
        perldoc strict

        foreach (@test)
        {

        (Intermezzo: perldoc perlstyle zum Thema, wo die geschweiften Klammern hinsollten.)

        print "$_ \n";

        perldoc -f join
        perldoc perlvar, $/

        Und dann hab ich ja in $_ die PID,

        Genauer gesagt hast Du in @test die zugreifenden PIDs. Beachte unbedingt

        perldoc -f chomp

        Cheatah

  2. Hi,

    $x = system ("fuser datei.txt");

    Du könntest einfach den entsprechenden Shell-Befehl direkt ausführen:

    $x = ´fuser datei.txt´;

    Als ergebnis enthält $x zwar keinen logischen wert, aber die Ausgabe des Befehls. Ich weis zwar nicht, ob das bei dem Befehl was bringt, da ich ihn nicht kenne, aber vielleicht kannst du dir so was basteln.
    WICHTIG: ´ = Apostrohp (neben Backspace-Taste), sonst funktionierts nicht.

    Ciao Michi