Prozessverwaltung

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich verstehe Deine Frage nicht.
    Der Prozess, der seine Arbeit getan hat, kann sich ganz normal beenden. Also wird sich der Kindprozess irgendwann aus dem System verabschieden.
    Sicher kannst Du ihn mit kill() ebenfalls beenden. Ob Du den Elternprozess ebenfalls beendest, bleibt Dir überlassen.
    Die Kindprozesse werden vom System auch beendet, wenn der Elternprozess beendet wird.
    Das ist allerdings unsauber und es gibt Ausnahmefälle.

    cu,
    -ds-

  • Also ich möchte einen Prozess beenden, wenn eine Bedienung eintrifft.

    Z.B

    Code
    if ( Bedienung ) 
                    { kill (pid, SIGTERM) }


    pid ist in diesem Fall 0, das es sich um einen Kindprozess handelt. Reicht die Anweisung kill (pid, SIGTERM) bzw. kill ( pid, SIGKILL ) aus?

  • Ok.
    Versuche grade eine Pause an einen Prozess zu schicken mit

    Code
    kill (pid, SIGSTOP)


    klappt auch.
    Laut Standarteinstellung wird

    Code
    kill (pid, SIGCOM)

    ignoriert und ich kann das Programm nicht fortsetzen. Wie erreiche ich denn, dass SIGCOM erkannt wird?

    Einmal editiert, zuletzt von Cool_pi (4. September 2014 um 14:12)

  • Oh, sorry
    habe mich gleich 2 mal verschrieben.
    Aber auch SIGCONT geht nicht. Von der Tastatur meines PC schicke ich 1, der Prozess wird angehalten. Mit 2 möchte ich fortfahren, doch es funktioniert nicht.

    case '1':
    kill (pid, SIGKILL)
    break;
    case '2'
    kill (pid, SIGCONT)
    break;

  • killall Prozessname ist doch bash.

    Ich möchte das in C machen.
    Beenden funktioniert jetzt.

    Wie gesagt die Pause wird aufgerufen, aber der Befehl Pause beenden wird ignoriert.

    So sieht es aus.

    Code
    case'3'
    kill(pid, SIGKILL)
    break;
    case'1'
    kill(pid, SIGSTOP)
    break;
    case'2'
    kill(pid,SIGCONT)
    break;

    Vielleicht so was probieren?

    void sigfunc(int sig)
    {


    if(sig == SIGSTOP)
    pause();
    else
    printf("Keine Pause");
    } ?

    Einmal editiert, zuletzt von Cool_pi (4. September 2014 um 15:26)

  • Kannst Du versuchen, das über einen eigenen Handler zu machen.
    Ich muss da jetzt echt passen ob man diese stop/continue Funktionalität explizit selbst einbauen muss oder ob das OS das übernimmt. Ich würde da eher auf letzteres tippen. Mal sehen, evtl. probier ich das mal aus, wenn ich wieder aus der Stadt zurück bin.
    Hast Du es schon mal mit kill -18 <pid> bzw. kill -19 <pid>auf der Kommandoebene probiert?

    //EDIT:
    Also ... ist schon so, wie ich mir das dachte ... STOP/CONT wird vom OS behandelt. Alles andere wäre auch irgendwie unlogisch ...

    cheers,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!