首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空主机名(sethostname)

问空主机名(sethostname)
EN

Unix & Linux用户
提问于 2022-01-15 16:06:02
回答 1查看 743关注 0票数 -1

由于一些无关的原因,我希望使用sethostname系统调用将Linux机器的主机名设置为空字符串。

代码语言:javascript
复制
#include <unistd.h>

int main()
{
    sethostname("", 0);
    return 0;
}

虽然这在原则上是可行的,但我想知道。emtpy主机名都符合SUSv2和POSIX.1和b。设置一个空主机名是否会导致一些负面影响,我目前还没有预见到呢?

EN

回答 1

Unix & Linux用户

发布于 2022-01-15 16:37:45

您可能会得到一些程序的令人困惑的输出,如果另一个程序试图解析它们,这可能会导致问题。

例如,在我尝试的系统上,来自uname -a的输出变成了以下内容:

代码语言:javascript
复制
Linux  2.6.42-amd64 #1 SMP ...

主机名应该位于两个空格之间。如果某些程序试图以awk默认的方式解析它,即将连续的空格作为一个处理,那么它们最终会选择错误的字段。当然,您会使用uname -m或其他什么,而不是解析uname -a,但这同样适用于其他程序。

通过用占位符替换空字符串,rsyslog绕过了这一点:

代码语言:javascript
复制
Jan 15 18:28:14 localhost-empty-hostname kernel: [32741563.144045]...

这不应该引起任何问题,但也不太漂亮。

(哦,至少在Debian上,hostname命令不接受空主机名,所以我想那里的人不认为这是受支持的配置。我有点惊讶内核会接受这一点,但是它可能不会在内部使用它,除非有一些输出。)

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/686492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档