gpt4 book ai didi

c - 在 Linux API 或系统调用失败后,我必须处理所有 errno 吗?

转载 作者:太空狗 更新时间:2023-10-29 11:33:57 26 4
gpt4 key购买 nike

例如,如果调用 msgsnd/msgrcv 失败:

  1. 如何处理错误号——最好的方法是什么?
  2. 什么原则适用于业务产品?
  3. 我必须涵盖所有这些吗?
  4. 必须处理哪些类型的错误?我是否必须为 EINTR 或类似的东西编写信号处理程序?

这是我的稻草人代码:

RetVal = msgrcv(... );

if( RetVal == -1 )
{
switch (errno)
{
case E2BIG:
...
case EAGAIN:
...
case EFAULT:
...
case EIDRM:
...
case EINTR:
...
case EINVAL:
...
case ENOMEM:
...
default:
...
}

最佳答案

这取决于您要应用的编码标准,以及您如何合理地应对失败。

应该始终检查错误,但您通常可能只处理其中一两个错误,例如 EINTR。在出现意外错误的情况下,我至少会在暴力退出之前尝试打印某种诊断性的最后喘息消息。

软件越关键,就越需要精心设计,更全面的错误处理是其中的一部分。

由于您的标签是“C”和“Linux”,我假设您使用的是 GCC,在这种情况下请查看 printf 中方便的 %m。

关于c - 在 Linux API 或系统调用失败后,我必须处理所有 errno 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9660711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com