由于一些无关的原因,我希望使用sethostname系统调用将Linux机器的主机名设置为空字符串。
#include <unistd.h>
int main()
{
sethostname("", 0);
return 0;
}虽然这在原则上是可行的,但我想知道。emtpy主机名都符合SUSv2和POSIX.1和b。设置一个空主机名是否会导致一些负面影响,我目前还没有预见到呢?
发布于 2022-01-15 16:37:45
您可能会得到一些程序的令人困惑的输出,如果另一个程序试图解析它们,这可能会导致问题。
例如,在我尝试的系统上,来自uname -a的输出变成了以下内容:
Linux 2.6.42-amd64 #1 SMP ...主机名应该位于两个空格之间。如果某些程序试图以awk默认的方式解析它,即将连续的空格作为一个处理,那么它们最终会选择错误的字段。当然,您会使用uname -m或其他什么,而不是解析uname -a,但这同样适用于其他程序。
通过用占位符替换空字符串,rsyslog绕过了这一点:
Jan 15 18:28:14 localhost-empty-hostname kernel: [32741563.144045]...这不应该引起任何问题,但也不太漂亮。
(哦,至少在Debian上,hostname命令不接受空主机名,所以我想那里的人不认为这是受支持的配置。我有点惊讶内核会接受这一点,但是它可能不会在内部使用它,除非有一些输出。)
https://unix.stackexchange.com/questions/686492
复制相似问题