Hallo Daniel,

ich hab den Code jetzt mal aufgeräumt und alles rausgeworfen was ich im Moment nicht brauche.

Code:
// Compile GCC -o serial_wiring -l rt serial_wiring.c -lwiringPi

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>
//WiringPi include für SEN/STA Erkennung
#include <wiringPi.h>
//Konfig RASPI USART
#define BAUDRATE B9600  // 9600 Baud definieren für 8E1 I-Bus
char MODEMDEVICE[]= "/dev/ttyAMA0";    // Schnittstelle wählen
int getit; //Nachrichtenblock angekommen
int    fd;                // File descriptor
struct    termios newtio={};

unsigned char receive()                        //Zeichen empfangen
{
    
    int res;
    unsigned char buffer;

    res = read(fd, &buffer, 1);

    getit = fd;
    return buffer;
}

int init()                        //Schnittstelle parametrieren und öffnen für I-Bus 9600 8E1
{
    //O_RDONLY, O_WRONLY or O_RDWR -
    //O_NDELAY (geht weiter, wenn keine Daten da sind und gibt "-1" zurueck)
    // man 2 open fuer mehr Infos - see "man 2 open" for more info
    // O_NOCTTY No ControllTeleType 

    fd = open(MODEMDEVICE, O_RDONLY | O_NOCTTY );
    if (fd < 0){
        printf("Fehler beim oeffnen von %s\n", MODEMDEVICE);
        exit(-1);
    }
    memset(&newtio, 0, sizeof(newtio));
    newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD | PARENB;    //setzt Einstellungen vom UART 
    newtio.c_iflag = IGNPAR;
    newtio.c_oflag = 0;
    newtio.c_lflag = 0;         /* set input mode (non-canonical, no echo, ...) */
    newtio.c_cc[VTIME] = 0;     /* inter-character timer unused */
    newtio.c_cc[VMIN] = 1;    /* blocking read until 1 chars received old 1 */
    newtio.c_cc[VSTART]   = 0;     /* Ctrl-q startet Datenübertragung */
    newtio.c_cc[VSTOP]    = 0;     /* Ctrl-s stoppt Datenübertragung*/
    
    tcflush(fd, TCIFLUSH);
    tcsetattr(fd, TCSANOW, &newtio);
    return fd;
}

int main(int argc, char** argv)        //Programmstart
{
  //new
  int pin = 7;  //GPIO 4
  int value = 0; // Deklaration Eingangswert GPIO4
  getit = 0;
  printf ("Raspberry Test UART+wiringPi\n") ;

  if (wiringPiSetup () == -1)
    exit (1) ;
  //Fehlerrückgabe wiringPi
  
  pinMode(pin,INPUT); //wiringPi GPIO4 Pin7 deklarieren
  

    char c;
     init();                    //Schnittstelle UART parametrieren und öffnen
    //sleep(5);                 //nix tun
     
    while (1)
        {
    
    value = digitalRead (pin);
     printf("Status SEN/STA %d \n", value );
    
    //printf("SEN/STA: %d\n", value); // BUSRUHE?
    
    c=receive();
    //if((value==1)){
        printf("MESSAGE %X\n", c); // c in Hex ausgeben    %d = Dezimal %H = Hex
        
  
        } 
    
    close (fd);
    return 0;
}
Welche manpages meinst du? In der "open" hab ich nichts entdeckt. Wie vielleicht schon erwähnt ich bin leider kein Profi deshalb wohl auch die dummen Fragen.

Wie geht das genau mit SIGIO bzw in welchem man finde ich das?

Grüße

Rainer