Domanda

Non capisco il motivo per cui a volte ho bisogno di usare fflush() ea volte no.

Il mio programma in segfault al momento e io sono il debug con istruzioni di stampa. Quando un programma segfaults, non stdout non svuotare automaticamente il buffer?

È stato utile?

Soluzione

Non capisco il motivo per cui a volte ho bisogno di usare fflush () e, talvolta, no.

A volte i buffer stdio sono lavata a volte non lo sono. Ad esempio semplicemente compreso un "\ n" nella stoffa stampata tipicamente dilavare (perché stdout è per difetto linea tamponata quando collegato a un terminale).

Quando un programma segfaults, fa stdout non lavare il suo buffer automaticamente?

buffer stdio sono svuotate dai exit. Quando un segnale (come SIGSEGV) uccide un processo, exit non si chiama . Un altro modo per uscire da un processo senza risciacquo i buffer stdio è quello di utilizzare il _exit chiamata Unix-specifico.

Altri suggerimenti

No, perché dovrebbe. Il programma viene ucciso dal sistema operativo. Se si verifica un segfault, il programma non è più in uno stato significativo è, quindi niente di possono accadere in modo sicuro, a quel punto diverso immediata risoluzione.

(E non nessuno cercare di registrare un gestore di segnale per SIGSEGV.)

"Non riesco a capire perché fflush (stdout) viene chiamato qui, in questo codice Io cerco di commentare questa linea e comportamento è stato esattamente lo stesso ".

perché non siete garantiti per vedere printf precedente () Uscita se questo uscita non termina in una riga.

In sostanza, è necessario solo se si sta visualizzando dire un prompt senza un ritorno a capo, e si vuole fare in modo che l'utente può vederlo.

questo sito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top