Ich entwickle ein Werkzeug für die Verarbeitung von Coredump. Unter Verwendung sysctl
ich es einstellen, um Coredump auf Werkzeugeingabe zu erhalten. Alles funktioniert super. Aber heute habe ich mich mit der Situation konfrontiert, als (ich weiß nicht, warum) coredump ist gebrochen. Wenn ich reguläre Datei als coredumps Ziel einstelle - es erscheint nicht. Also - ich vermute, dass es aus irgendeinem Grund kaputt ist. Wenn ich stattdessen mein Tool tee
einrichten - kein Ergebnis.Wie zu bestimmen, dass die Eingabe (Stdin) unterbrochen ist?
So. Ich möchte eine solche Situation feststellen (wenn es möglich ist) und sie protokollieren, anstatt fehlerhafte Dateien zu erstellen.
Ich verwende ::read(STDIN_FILENO,buff, buffSize)
, um Daten zu erhalten. Und am Ende read
geben Sie einfach 0
zurück. Ich möchte angeben, wenn 0
bedeutet das Ende der Datei und wenn es heißt, Rohr ist gebrochen.
Haben Sie das Ergebnis des 'read'-Anrufs überprüft? –
Ja, und ich habe darüber in meiner ersten Nachricht geschrieben. Ergebnis ist Null. – denys
"Am Ende ist es einfach Returns" 0 "" klang wie du beschwert hast, dass Buff am Ende Nullen hatte. Bitte produziere nächstes Mal ein [MCVE]. Richtig, also, was ist das Problem? Wenn Sie "0" bekommen, ist die Pfeife kaputt. Was fehlt? –