如何使用QML更改系统日期和时间(嵌入式Linux)?

时间:2018-01-05 06:11:30

标签: linux qt datetime qml

如何在QML中更改系统时间和日期?我认为这可能来自一个例子,尽管我怀疑这个对象是在哪里发送的。它没有用。有人能让我知道怎么做吗?以下是我的代码:

  var time = new Date()
  time.setHours(hour)
  time.setMinutes(minute)
  time.setSeconds(secs)

1 个答案:

答案 0 :(得分:0)

您通常无法在没有root权限的情况下更改系统时间,并且设置系统时间是系统管理员的整个系统操作。请参阅settimeofday(2)adjtimex(2)。另见credentials(7)& capabilities(7)

(所以这不是使用Qt或其他内容的问题;任何使用settimeofdayadjtimex的库都需要root权限)

另请阅读time(7)

你通常不应该改变系统时间,而是使用NTP使用一些守护进程来连续调整它。

您的代码只是在一段时间内更改某个变量的值。它不会改变系统时间。

系统管理员可以更改时间,例如与-s一起使用的date(1)需要root权限并在内部使用settimeofday。另请参阅hwclock(8)

请注意,GUI应用程序通常不应以root身份运行(并且Qt或GTK不希望以root身份运行)。

如果你开发了一些嵌入式系统并且希望用户设置时间,你可以考虑编写一些使用setuid小型专用settimeofday(2)可执行文件并拥有你的GUI应用程序运行它(例如使用QProcess)。在编写setuid程序时要非常小心(因此请阅读ALP或关于Linux系统编程的一些好书),因为您可以轻松获得vulnerabilities。请注意 setuid 是基本机制(由/bin/login/bin/su/usr/bin/sudo等使用...;它也可用于Android系统或任何Unix - 来源系统)获取或更改权限。使用起来很棘手,所以要花时间去理解它。

也许您的initsystemd可能会配置为简化此类任务....

(您需要更多地描述整个系统以获得更多帮助)