C: Workaround für Problem
-
Erst mal sorry für's Posten ins falsche Forum.
Ich habe das Problem mit select (siehe manpage, man select) gelöst.
Klappt wunderbar.Gruß,
Gwar
-
Aber ich frage mich, wieso sich ein read() nicht durch ein Signal abbrechen lässt, wo es doch extra dafür einen ERROR-Code gibt.
-
Mein Professor meinte, es wäre meistens, aber eben nicht immer, erwünscht, dass die Leseoperation nach einem alarm wieder aufgenommen wird (z.B. wenn der Prozess nur an etwas erinnert werden soll). Wahrscheinlich liegt es daran?
Gruß,
Gwar
-
es gibt ja eine neuere POSIX Signal API, da kann man auch einstellen, ob ein Signal unterbrechend wirkt
-
nur ma so ne frage... aber seit wann kann man in c funktionen in einer funktion definieren?
-
gar nicht. Ich nehm an, dass das ein AbTipp Fehler war.
-
nein, kein Abtippfehler. Ich muss zugeben, dass ich erst seit ein paar Wochen C programmiere und mir dieser Beschränkung nicht bewusst war. Bei mir kompiliert das Programm auch ohne Probleme und funktioniert, daher habe ich mir auch nichts weiter bei gedacht. Hab schon in nem anderen Forum gelesen, dass das eigentlich nicht der Fall sein dürfte... ist es aber bei mir
Gruß,
Gwar
-
das ist eine gcc-Erweiterung, die leider aber auch nur dort funktioniert. Kann man nur hoffen, das sich dass irgendwann mal ändert.
-
... dass es auch von anderen Compilern unterstützt wird oder dass gcc es nicht mehr macht weil es kein Standard ist?
Übrigens: wie könnte man denn ohne lokale Funktionsdeklarationen realisieren, dass ein Signalhandler (dem man ja AFAIK keine Werte mit übergeben kann) auf eine Variable zugreift? Eigentlich dann ja nur durch globale Variablendefinitionen, oder?
Gruß,
Gwar
-
ich meine hoffen, dass es irgendwann mal Standard ist und überall funktioniert.
Jo, ohne der Erweiterung musst du es global machen. Nicht wirklich im ganzen Programm global, aber immerhin in dem Modul.