对于业余无线电领域的一天,我有一个GPS软件狗,我想用它来设置我的Linux笔记本电脑的系统时间,当我在内地,那里没有互联网接入。如何在Rust中设置系统时钟时间?PS:我检查了crates.io,但没有什么对我来说是一个解决方案。
ars1skjm1#
因为这看起来不像是“我想写一个可靠的库”,而更像是“把它整合在一起”,所以有几个选项,一些黑客:
date
std::process::Command::new("date") // Produce the date string with some crate: date, chrono, hifitime, ... .args(["--set", "2023-12-14 01:23:45.678"]) .env_clear() .env("LC_ALL", "C.UTF-8") .output()
字符串Playground(See关于准确性的评论!)
strace
clock_settime
nix
libc
当然,所有这些都需要适当的权限,当然,要么是root,要么有一个能力集。旁注:我完全同意@n0rd的评论,我不知道你是如何从你的gps加密狗阅读的,但是如果它已经是gpsd就没有意义了,如果它是一些低级的方法,我想你会遇到有趣的问题(想到Week number rollover)。
1条答案
按热度按时间ars1skjm1#
因为这看起来不像是“我想写一个可靠的库”,而更像是“把它整合在一起”,所以有几个选项,一些黑客:
date
:字符串
Playground
(See关于准确性的评论!)
strace
运行date
,然后看到它使用了clock_settime
系统调用。通常,你可以在nix
crate中找到该系统调用的safe and nicely typed wrapped version。如果找不到,就使用checklibc
。当然,所有这些都需要适当的权限,当然,要么是root,要么有一个能力集。
旁注:我完全同意@n0rd的评论,我不知道你是如何从你的gps加密狗阅读的,但是如果它已经是gpsd就没有意义了,如果它是一些低级的方法,我想你会遇到有趣的问题(想到Week number rollover)。