2017-12-11 5 views
0

Hier verwendet printf ist eine Folie aus System-Programmierung Kurs ich zur Zeit unter:printf Deadlock - Einige printf Meldungen ignoriert, wenn in Signal-Handler

<slide goes here>

catch_child ist SIGCHLD Handler. Wie stimmt die Ausgabe mit dem Code überein? Warum werden einige "Child #x gestartete" Nachrichten nicht gedruckt?

+4

Vermutlich wegen der Blockade der Schlitten über warnt. Verdeutlicht der Rest des Decks nicht, was sie damit meinen? –

+1

Siehe auch: https://stackoverflow.com/questions/3941271/why-are-malloc-and-printf-said-as-non-reentrant –

+0

@OliverCharlesworth Nein, die nächste Folie diskutiert Hunger. Aber die Antworten aus dem verlinkten Thread haben alle meine Fragen beantwortet. Vielen Dank! –

Antwort

0

Per Definition Deadlock ist eine Situation, wenn kein Fortschritt gemacht wird.

So ist es nicht, dass einige printf Nachrichten nicht gedruckt/ignoriert werden, aber dass nach bestimmten bestimmten printf Aufruf das Programm auf etwas wartet, das nie passieren wird und es dort für immer wartet.

Für weitere Informationen über, was ein solches Verhalten führt zu sehen: Why are malloc() and printf() said as non-reentrant?