Echtzeituhr einstellen ...



  • Hallo,

    ich möchte die Hardware Uhrzeit neu einstellen.
    Braucht man da spezielle Berechtigungen ?
    Wie geht das mit gcc ?
    ich kenne leider nur das auslesen mit:

    #include <time.h>
    #include <stdio.h>
    int main()
    {
    struct tm zeit;
    time_t now;
    char buffer[100];
    time(&now);
    
    zeit = *localtime(&now);
    
    strftime(&buffer, 99, "%Y-%m-%d, %H:%M", &zeit);
    printf("Now: %s \n", buffer);
    }
    

    Gruß
    thenoname



  • so nochmal..

    #include <stdio.h>
    #include <linux/rtc.h>
    #include <sys/ioctl.h>
    #include <sys/time.h>
    #include <sys/types.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <time.h>
    
    int main(void)
    {
      int fd;
      struct tm *zeit;
      time_t jetzt;
    
      jetzt = time(NULL);
    
      zeit = localtime(&jetzt);
    
      printf("%s\n",asctime(localtime(&jetzt)));
    
      zeit->tm_year -= 20;
      printf("Year: %d\n", zeit->tm_year);
    
      fd = open("/dev/rtc", O_RDWR);
    
      ioctl(fd, RTC_SET_TIME, zeit);
    
      return 0;
    }
    
      /* jetzt mal hwclock aufrufen */
    

    sollte soweit selbsterklärend sein..
    eventuell ist auch statt tm, rtc_tm zu verwenden.
    du solltest root sein um das auszuführen.



  • multi thx ...

    ich nehme mal an, das man das "open" auch mit einkompilierten
    root Rechten ausführen kann, das auch ein normaler Benutzer
    Zugriff erhällt. Oder kann man das /dev/rtc einfach mit chmod
    verändern ?

    Gruß
    thenoname


Anmelden zum Antworten