• tach auch!

    hmm... hätte da mal ne frage an alle wissensdurstigen perl fachleute.... vielleicht weiß da ja netterweise jemand rat....
    ich versuch schon die längste zeit ein perl skript als quasi lame remote auf IO::Socket basis zu erstellen... sinn des ganzen: auf winamp knopfdruck startet unix lame... sprich, winamp sendet an wartende perl schleife (horcht auf bestimmtem port) einen startstring, sodann wird lame als system-call aufgerufen...
    das ganze hätte ich mittels fork gelöst, da ich zwei prozesse brauche: einen (die erste schleife), der auf den eingehenden startstring wartet, und den zweiten (zweite schleife) der auf den eingehenden stopstring wartet.... nun funzt das ganze auch soweit, allerdings nur bis zum starten, welches im kindprozess stattfindet... unter ps is da auch alles fein aufgelistet, lame usw. und auch der noch aktive elternprozess, der nun seinerseits auf das stoppen warten würde... nur reagiert das skript hier nicht mehr, oder die entsprechende warteschleife im elternprozess wird erst gar nicht gestartet, weil der kinprozeß noch blockiert oder so.... keine ahnung, an dem punkt hänge ich leider....
    naja... langer worte langer sinn.... hoffe jemand versteht mein kauderwelsch und antwortet evanteux.....
    sogesehen bedanke ich mich jedenfalls für jedes statement....

  • naja, was ist das Problem, die zombie-processes? Wenn ja, dann gibts abhilfe:


    habs nicht ausprobiert, sollte aber ungefaher so gehn, wenn du also ganz normal deine socket->accept() loop einbaust und wie oben die eine ref auf do_term() in die SIG handler installierst sollte er beim schliessen die child procs killen.

    Als Literatur zu diesem Thema is "Network Programming with Perl" vom Stein sehr zu empfehlen.

    ciao

    Oliver

    this is Unix land. In silent nights, you can hear Windows machines reboot...

  • hi,

    weiss einer wie man so eine aufgabe löst:

    #iclude<studio>
    void main(void)
    {
    printf("Guten %d/n", fork());
    printf("Morgen %d/n", fork());
    }
    ich möchte wissen was das programm ausgibt, wobei das ergebnis mittels der unten abgebildeter baum ermittelt werden soll:
    fork

    guten"101" guten"0"
    PID=10 PID=0

    fork fork

    morgen"102" morgen"0" morgen"103" morgen"0"
    PID=20 PID=0 PID=10 PID=0
    das ergebnis sollte lauten:
    guten 101
    guten 0
    morgen 103
    morgen 0
    wie kommt man aber auf z.B.:guten=101,pid=10,morgen=0,pid=0,etc.
    bitte es ist wichtig!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!