das verstehe ich nicht:
pthread_kill soll doch einen anderen thread killen - und du sagst, das tut es nicht?
Druckbare Version
und wie geht es dann richtig, so wie beabsichtigt?
https://en.wikipedia.org/wiki/Signal_(IPC)#SIGKILL
- - - Aktualisiert - - -Zitat:
Zitat von wikipedia
Wie es richtig geht, zeigt mein Beispiel: Du kannst einen Thread nicht töten. Du kannst ihn nur so programmieren dass du ihn im jeden Fall sauber beenden kannst (join). Wenn das keine Option ist, geht nur der Subprozess den du mit SIGKILL immer töten kannst.
deinen Code verstehe ich leider überhaupt nicht - was macht der in einfachen Worten?
PS
was meinst du mit "Subprozess" den ich "immer töten kann" ?
Ich würde alle deine Threads als Subprozesse ausführen und mit ihnen mit Pipes, socketpair, posix mq oder was auch immer reden. Dann kannst du jeden deiner Prozesse abschießen und neu starten.
- - - Aktualisiert - - -
Er startet einen Subprozess per fork(), Sendet den Subprozess über eine pipe eine int Zahl. Der Subprozess ließt diese Zahl von der Pipe. Würfelt, bei 6 simuliert der Subprozess ein wait_forever(), bei 7 eine anormale Programmterminierung und in jedem anderen Fall schickt er es über die zweite Pipe zurück.
Das wiederholt sich endlos.
ich verstehe folgende Dinge nicht:
Subprozess
worker
Pipes
socketpair
posix mq
fork
wait_forever()
daher denke ich, das ist 2 Nummern zu schwierig für mich.
Da ich deinen Code nicht verstehe, kann ich auch meinen Code nicht anpassen und umschreiben, leider...
Es soll nun mal ein Thread, der irgendwie geblockt ist oder sich aufgehängt hat warum auch immer (hängt quasi in 1 Programmzeile fest, ohne dass er seine loop- (while() )-Scheife weiter durchläuft), einzeln beendet werden, ohne die Stabilität meines Programms zu stören, und dann soll er neu gestartet werden.
Hast du meine Code übersetzt bekommen?
habe ich ehrlich gesagt noch gar nicht probiert, denn ich weiß noch gar nicht, was da passiert und ob ich es nutzen kann.
Der Code von dir müsste in mein Beispiel eingesetzt werden, für meine Arduino-Raspi-UART-Kommunikation damit es für mich Sinn macht... :rolleyes:
Subprozess: Wenn du in der bash ein Program startest, ist das Program ein Subprozess deiner bash
worker, ein name für den Subprozess. Er soll einfach Arbeit verrichten
Alles IPC (Inter Prozess Kommunikation)
Pipes
socketpair
posix mq
fork(): Startet einen Subprozess. Siehe oben
wait_forever(): Das simuliert deinen hängenden Prozess der auf nichts anderes mehr reagiert.