ntpdate的退出代码是什么意思?

时间:2017-05-31 10:28:45

标签: linux ntp

当没有活动的互联网连接时,在Linux上运行ntpdate程序会在控制台中显示此消息:

  

退出,无法使用名称服务器:名称解析暂时失败

程序的退出代码是1就是这种情况。然而,我可以找不到退出代码的真正含义,是否可以安全地说退出代码1总是与上述错误对应?

看一下the docs对我没有帮助,它说明了以下内容:

  

如果找到服务器并更新时钟,则ntpdate的退出状态为零,否则为非零。

有人可以给我一份所有可能退出代码及其含义的清单吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

看了Source Code of the ntpdate program之后,我想我可以回答我自己的问题。

不,退出代码1并不总是与错误Exiting, name server cannot be used: Temporary failure in name resolution相关。

在源代码中搜索exit(1),我发现20个退出代码为1的情况。

对于任何感兴趣的人,导致Exiting, name server cannot be used: Temporary failure in name resolution错误消息的代码段:

error = getaddrinfo(serv, service, &hints, &addrResult);
if (error != 0) {
    /* Conduct more refined error analysis */
    if (error == EAI_FAIL || error == EAI_AGAIN){
        /* Name server is unusable. Exit after failing on the
           first server, in order to shorten the timeout caused
           by waiting for resolution of several servers */
        fprintf(stderr, "Exiting, name server cannot be used: %s (%d)",
            gai_strerror(error), error);
        msyslog(LOG_ERR, "name server cannot be used: %s (%d)",
            gai_strerror(error), error);
        exit(1);
    }
    fprintf(stderr, "Error resolving %s: %s (%d)\n", serv,
        gai_strerror(error), error);
    msyslog(LOG_ERR, "Can't find host %s: %s (%d)", serv,
        gai_strerror(error), error);
    return;
}