Anzeige:
Ergebnis 1 bis 6 von 6

Thema: mysteriöses gcc-Problem

  1. #1
    Gast

    Post mysteriöses gcc-Problem

    Hi,

    folgendes Programm macht überhaupt nicht das, was es soll. Es gibt nichtmal den printf in der 3. Zeile aus, es passiert eigentlich überhaupt nichts. Ich kann noch tippen und enter drücken, das steht dann auch toll da aber mehr nicht. Unter Windows klappts einwandfrei. Schauts euch mal an, die Nuß (wenns denn eine ist):

    Danke, Sion

    <pre>
    //allgemeine Bibliotheken
    #include &lt;stdio.h&gt;
    #include &lt;stdlib.h&gt;
    #include &lt;string.h&gt;
    #include &lt;fcntl.h&gt;

    //nur Windows zum Testen
    #if defined(_WIN32)
    #include &lt;io.h&gt;
    void set_pin(int i) {(i);};
    void clear_pin(int i) {(i);};
    void usleep(int i) {(i);};
    int pin_init_user(int i) {return 0;};
    void pin_output_mode(int i) {(i);};
    #define LP_PIN01 (1 &lt;&lt; 16)
    #define LP_PIN02 (1 &lt;&lt; 0)
    #define LP_PIN03 (1 &lt;&lt; 1)
    #define LP_PIN04 (1 &lt;&lt; 2)
    #define LP_PIN14 (1 &lt;&lt; 2)
    #define LP_PIN16 (1 &lt;&lt; 2)
    #define LP_PIN17 (1 &lt;&lt; 2)
    #define LPT2 0x278
    #define LP_DATA_PINS 1
    #else //nur Linux
    #include "parapin.h"
    #endif

    #define LPT_PORT LPT2
    #define MAIL_ENTRIES 2 //hier anpassen
    #define WAIT 10 //wie viele Sekunden zwischen Mailchecken warten

    int init_led(void);
    int file_zero(char *);

    struct mail_entry
    {
    char file[50];
    int pin;
    };

    //////////////////////////////
    // main
    //////////////////////////////
    int main(void)
    {
    struct mail_entry me[MAIL_ENTRIES];
    int i;

    printf("1st");

    // Hier anpassen
    strcpy(me[0].file, "/var/spool/mail/root");
    me[0].pin = LP_PIN01;
    strcpy(me[1].file, "/var/spool/mail/user");
    me[1].pin = LP_PIN02;

    if (init_led() != 0) {printf("Fehler!"); return 1;}

    //die einzelnen Postfächer abfragen und entsprechend die LED's schalten
    while (1)
    {
    for (i=0; i &lt; MAIL_ENTRIES; i++)
    {
    if (file_zero(me[i].file) == 1) {set_pin(me[i].pin);printf("%s ist an", me[i].file);}
    else {clear_pin(me[i].pin);printf("%s ist aus", me[i].file);}
    }
    usleep(1000*1000*WAIT);
    }
    return 0;
    }

    //////////////////////////////return=1 falls größer 0
    // prüft, ob datei größer 0 =0 falls gleich 0
    ////////////////////////////// =-1 bei Fehler
    int file_zero(char *fps)
    {
    int fp;
    if ((fp=open(fps, O_RDONLY)) == -1) return -1;
    if (lseek(fp, 1, SEEK_SET) != 1) return 0;
    else return 1;
    }

    //////////////////////////////return=0 falls erfolgreich
    // initialisiert LPT-PORT =1 falls Fehler
    //////////////////////////////
    int init_led(void)
    {
    if (pin_init_user(LPT_PORT) &lt; 0) return 1;
    pin_output_mode(LP_PIN01|LP_DATA_PINS|LP_PIN14|LP_ PIN16|LP_PIN17);
    return 0;
    }

    </pre>


    [Dieser Beitrag wurde von Sion am 16. November 2000 editiert.]

    [Dieser Beitrag wurde von Sion am 16. November 2000 editiert.]

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.10.1999
    Ort
    Dresden
    Beiträge
    255

    Wink

    Ich rate mal ins Blaue hinein... Du hast Dein Programm "test" genannt???

    Thomas

  3. #3
    Gast

    Post

    <BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von thommy:
    Ich rate mal ins Blaue hinein... Du hast Dein Programm "test" genannt???

    Thomas
    [/quote]

    Neee, die C-Datei heißt otest.c und das fertig kompilierte led, daran liegts auch nicht, wenn ich es mit ./ am Anfang aufrufe... test allein verhält sich auch anders, es beendet sich nämlich. Trotzdem danke, mal sehen was noch so kommt...

    Sion

  4. #4
    Hagen von Tronje
    Gast

    Post

    Oh, ein \n hat bei printf() schon manches Wunder bewirkt

    Hagen

    Warum verwendest Du nicht sleep(),
    sollte NT, da POSIX.1 konform doch auch haben ?

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.10.1999
    Ort
    Dresden
    Beiträge
    255

    Post

    Die Programmteile, die zu gepostet hast, funktionieren an sich. Entweder liegt der Fehler im Übersetzungsvorgang (ich glaube nicht, dass es am Compiler selbst liegt; eher an Deinem Aufruf) oder er liegt in "parapin.h".

    Thomas

  6. #6
    Gast

    Post

    <BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Original erstellt von Hagen von Tronje:
    Oh, ein \n hat bei printf() schon manches Wunder bewirkt
    [/quote]

    geil, mal wieder voll reingefallen... Danke!


    Sion

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •