GNU/Linux >> Linux Esercitazione >  >> Linux

Imposta la data e l'ora del sistema usando C++ in Linux

Hai capito male. settimeofday(2) imposta l'ora dell'epoca. che è sia la data che l'ora. Tempo di lettura(7)

Quindi, se inizi da una stringa che esprime una data, converti quella stringa con strptime(3) in un struct tm quindi convertilo in un orario Unix con mktime(3) quindi passalo a settimeofday (ovvero il tv_sec campo).

Tuttavia, settimeofday richiede il privilegio di root e credo che di solito dovresti evitare di chiamarlo (almeno sui normali computer connessi a Internet). Meglio impostare un servizio client NTP sul tuo PC Linux (ad esempio eseguire ntpd o chrony e più in generale leggere il capitolo sysadmin su come tenere il tempo ...). Vedi anche adjtimex(2)

A proposito, cambiare bruscamente l'ora di sistema su un sistema multi-tasking, come Linux o Windows, è un'operazione molto pericolosa (poiché sconvolgerà e disturberà molte attività di sistema a seconda o utilizzando l'ora). Ci sono poche buone ragioni per farlo (è una pessima idea in generale). Se lo fai, fallo con pochissimi programmi e servizi in esecuzione (ad esempio Linux in modalità utente singolo). Non dovresti farlo nel normale codice dell'applicazione.


Scrivo questo pezzo di codice per impostare data e ora sotto Linux.

#include <time.h>

struct tm time = { 0 };

time.tm_year = Year - 1900;
time.tm_mon  = Month - 1;
time.tm_mday = Day;
time.tm_hour = Hour;
time.tm_min  = Minute;
time.tm_sec  = Second;

if (time.tm_year < 0)
{
    time.tm_year = 0;
}

time_t t = mktime(&time);

if (t != (time_t) -1)
{
    stime(&t);
}

Nota che stime richiede root privilegi.


Linux
  1. Utilizzo del comando timedatectl per modificare l'ora e la data sul sistema Linux RHEL7

  2. Imposta la data, l'ora e il fuso orario su un server Linux

  3. Come visualizzare la data e l'ora di riavvio del sistema Linux

  4. 7 Esempi di comandi della data di Linux per visualizzare e impostare la data e l'ora del sistema

  5. Ottenere la data e l'ora dell'avvio del sistema in Linux

Come impostare data e ora in Rocky e AlmaLinux

Come trovare la data e l'ora di installazione del sistema operativo Linux

Come impostare data e ora su desktop e server Rocky Linux 8

Come controllare la cronologia di riavvio del sistema e il tempo di avvio in Linux

Come impostare data e ora su Linux

Come modificare data, ora e fuso orario in Linux Mint 20