Ich weiß, wie man ein SIGINT fängt, aber ich weiß nur, wie man den Block irgendwo zufällig in meinen Code steckt. Ich muss in der Lage sein, SIGINT abzufangen, denn wenn eine Datei geschrieben wird (meine Datenbank schreibt häufig in eine Datei), verdirbt sie die Datei. Was ist der ideale Weg, damit umzugehen?Ruby - catch SIGINT, um die Fertigstellung der Datei zu ermöglichen
bearbeiten
In einem Fall behandelt ich diese Funktion durch die Ausführung meines Schreibens, wenn ich ein SIGINT erkennen, aber ich dies zu realisieren wird nicht helfen, wenn ich buchstäblich in der Mitte bin zu schreiben eine Datei mit Marshal.
Gibt es in Ruby keine Möglichkeit, ein SIGINT abzufangen und ihm zu sagen, es zu ignorieren, bis es zum Beispiel fertig ist zu schreiben?
bearbeiten 2
Nevermind, heraus nur eine mögliche Antwort ... siehe unten.
Haben Sie es mit [ 'Signal'] versucht zu kontrollieren (https://ruby-doc.org/core-2.3.1/Signal.html)? Verwenden Sie das, um ein Abschaltflag auszulösen. – tadman
Ich habe 'Falle' in der Vergangenheit benutzt ... aber ich lese nur ein bisschen - sprichst du über die Rettung der Unterbrechung? Wenn ich das machen würde, würde ich einfach die Rescue-Anweisung um den Dateischreibteil legen? – Max
Sie müssen das Signal abfangen, bevor es eine Ausnahme generiert. – tadman