[C] Programm startet erst nach printf()

mc_gulasch

Erfahrenes Mitglied
Moin,

ich hab ein sehr stranges Problem in meinem Projekt. Es läuft alles wunderbar, kompiliert fehlerfrei, ABER wenn man an dem Programm arbeitet und es längere Zeit (vielleicht 1-2 Stunden) nicht startet und dann versucht es auszuführen, bricht es immer irgendwo ab und geht nicht bis zum Schluss (ohne Fehlermeldung ohne alles einfach weg!!). Wenn ich zwischendrin mittels printf() etwas ausgeben lasse läuft es durch, auch mehrmals ohne Fehler und wunderbar. Wenn dann wieder nach einiger Zeit nix passiert und man führt aus braucht es wieder ein printf() (dabei reicht es auch, das alte zu löschen und wieder einzufügen) :confused:

Kann sich jemand darunter auch nur annähernd was vorstellen? Also ich wirklich nicht!

//EDIT:
Nach etlichen merkwürdigen rumgeteste krieg ich ab und zu eine Fehlermeldung, leider kann ich mit der garnichts anfangen. Der Fehler tritt in der isatty.c auf:
C:
/***
*isatty.c - check if file handle refers to a device
*
*       Copyright (c) 1989-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines _isatty() - check if file handle refers to a device
*
*******************************************************************************/

#include <cruntime.h>
#include <msdos.h>
#include <internal.h>
#include <io.h>

/***
*int _isatty(handle) - check if handle is a device
*
*Purpose:
*       Checks if the given handle is associated with a character device
*       (terminal, console, printer, serial port)
*
*Entry:
*       int handle - handle of file to be tested
*
*Exit:
*       returns non-0 if handle refers to character device,
*       returns 0 otherwise
*
*Exceptions:
*
*******************************************************************************/

int __cdecl _isatty (
        int fh
        )
{
        /* see if file handle is valid, otherwise return FALSE */
#ifndef _MAC
        if ( (unsigned)fh >= (unsigned)_nhandle )
#else  /* _MAC */
        if ((unsigned)fh >= (unsigned)_nfile)
#endif  /* _MAC */
                return 0;

        /* check file handle database to see if device bit set */
#ifndef _MAC
        return (int)(_osfile(fh) & FDEV);   /*  <---------------- HIER TRITT ER AUF */
#else  /* _MAC */
        return (int)(_osfile[fh] & FDEV);
#endif  /* _MAC */
}
Ich öffne davor zwar Dateien, aber zum einen überprüfe ich während ich sie durchgehe mit ferror() und frage beim öffnen wie auch schließen "errno" ab. Jedoch nichts sagt mir, dass da was falsch läuft. Der Fehler tritt dann anschließend in einer Funktion auf, die nix mit Dateien zu tun hat. Kennt jemand dieses isatty()
 
Zuletzt bearbeitet:
Hi.

Wie lautet denn die Fehlermeldung?

Vermutlich hast du etwas ganz wildes mit dem Speicher gemacht und unabsichtlich irgendwas überschrieben bzw. Speicher freigegeben und greifst trotzdem noch darauf zu. Damit wird dein Programm im Grunde unberechenbar und es ist reine Glückssache ob es durchläuft.

Die Erklärung der Funktion isatty hast du ja schon selber gepostet. Es stellt halt fest ab das übergebene Dateihandle ein TTY (Tele-TYpe) Gerät ist.

Gruß
 
Zurück