c++ - gethostname() 给出退出状态 -1 我该如何处理?

标签 c++ linux

<分区>

我正在尝试将计算机名称存储在名为 computerName 的字符串中。当运行 gethostname() 时,程序退出并显示退出状态 -1。我想弄清楚如何处理这个。有没有办法阻止程序完全退出,有没有办法发现出错的地方。 gethostname() 的文档说它的错误是 EFAULT、EINVAL、ENAMETOOLONG 和 EPERM。我不确定如何捕获它们中的任何一个。

问题不在于为什么会发生错误,而在于如何处理它。

错误发生的原因是因为我在一个有明显限制的在线ide上运行代码,并且这个错误不会发生在其他机器上。我尝试在 try and catch(...) 语句中围绕代码,但它仍然显示 exit_status -1。

void GetComputerName()
  {

    char hostname[1024];
    gethostname(hostname, 1024);

    computerName = hostname;

  }

//and then outputting
std::cout << computerName << std::endl;

预期结果 Linux-1994//或任何计算机名称

最佳答案

您可以通过名为errno 的全局变量了解这些错误。

由于错误是定义为宏的常量,您可以执行以下操作:

if(errno == EFAULT) printf("Specific error!")

Check this to get to know the constants.

关于c++ - gethostname() 给出退出状态 -1 我该如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54710346/

相关文章:

c++ - 您应该如何在 OpenGL 4.5 中初始化立方体贴图数组?

c++ - 插入和提取运算符不起作用

linux - 用户空间中的 ktime_get() 等价物

android - 找不到 monkeyrunner 命令

linux - Console_init 导致内核崩溃

linux - 如何创建像 debian 安装程序一样简单的命令行 UI?

Android NDK 如何将收到的 DatagramPacket 作为参数传递给 C 函数?

c++ - opencv 中的 cv::imshow 仅显示合成图像的一部分,但可以单独显示这些部分。为什么?

c++ - Pthreads——主线程和其他线程

linux - 如何从后台进程重定向日志