2 回答

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
您不能在純Qt中做到這一點(diǎn)。您需要使用Linux(或POSIX)特定的東西。
而且您可能不應(yīng)該這樣做,但是最好將整個(gè)系統(tǒng)配置為使用NTP(例如,通過運(yùn)行某些NTP客戶端...)。大多數(shù)Linux發(fā)行版已經(jīng)具有該功能。
如果您確實(shí)要設(shè)置系統(tǒng)時(shí)間(但是您不應(yīng)該 直接 從Qt應(yīng)用程序中設(shè)置系統(tǒng)時(shí)間,因?yàn)镼t應(yīng)用程序不應(yīng)以root用戶身份運(yùn)行,但請(qǐng)參見this),請(qǐng)先讀取time(7),然后閱讀adjtimex(2)和settimeofday(2 )
為此,您需要是root用戶,因此您不應(yīng)在Qt應(yīng)用程序中執(zhí)行此操作。您可以使用setuid技術(shù)以root身份運(yùn)行某些特定的命令或程序。Setuid棘手(請(qǐng)參閱憑據(jù)(7),execve(2),setreuid(2) ...),如果濫用(可能容易出錯(cuò)),可能會(huì)打開一個(gè)巨大的安全漏洞,因此請(qǐng)閱讀有關(guān)Linux編程的知識(shí),例如,ALP。
因此,如果您堅(jiān)持要這樣做(這可能是錯(cuò)誤的),請(qǐng)為此使用C編寫一個(gè)小的特定程序,并將其設(shè)置為setuid,然后從您的Qt應(yīng)用程序中運(yùn)行該setuid程序(例如,使用QProcess)。
添加回答
舉報(bào)