Re: ssh und maximale Laufzeit definieren

Autor: Michael Lestinsky <michael_at_lestinsky.de>
Datum: Fri, 17 Oct 2008 22:11:50 -0400
Am 17.10.2008 schrieb Markus Hochholdinger:
> Jetzt frage ich mich (google wußte (noch) keine Antwort) ob es ein Programm in 
> der Form wie z.B. time oder nice gibt, welchem man eine maximale Laufzeit für 
> ein auszuführendes Programm mitgeben kann. Wunschvorstellung wäre:
>   maxruntime -n 120 ssh .. .. ..

Das lässt sich doch mit ein paar kleinen Zeilen C schnell lösen. Als
kleine Hausaufgabe kannst du ja dieses Codefragment vervollständigen:

=========== 8< 8< 8< ============

#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>
#include <stdio.h>

pid_t child;

void sighandler (int sig) {
    switch (sig) {
        case SIGALRM:
            printf("ELTERN: Alarm timeout.\n");
            kill (child, SIGKILL);
    }
}

int main () {
    pid_t test;
    int stat, timeout = 1;

    // Hausaufgabe: Commandline verstehen...

    child = fork();
    if (child > 0) {
        // Elternprozess
        signal(SIGALRM, sighandler);    // Signalhandler registrieren
        alarm(timeout);
        printf ("ELTERN: Ja, mein Kind?\n");
        test = wait(&stat);
        printf("ELTERN: Das Kind starb und gab %d zurueck\n", stat);
        return 0;

    } else if (child == 0) {
        // Kindprozess
        // Hausaufgabe: Irgendwas aus der Exec-Funktionsfamilie?

        // Dummycode:
        printf ("KIND: Mama!\n");
        sleep (5);
        printf ("KIND: Ende.\n");

        return 0;

    } else {
        // Fork war ein Griff ins Klo...   
        return 2;
    }

    return 0;
}

=========== >8 >8 >8 ============

Ich habe es nur kurz durch den Compiler gejagt und getestet dass es keine
Zombies erzeugt. Die globale Variable ist zwar eklig, aber ich bin zu müde
für eine bessere Lösung. ;-)

Bye,
Michael
--
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: http://wiki.uugrn.org/wiki/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 18.10.2008

Dieses Archiv wurde generiert von hypermail 2.2.0 : 18.10.2008 CEST