问题标签 [errno]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1777 浏览

windows - Windows Perl 下的 EWOULDBLOCK 等效 errno

G'day Stackoverflowers,

我是 Perl 的autodie pragma 的作者,它改变了 Perl 的内置函数以在失败时抛出异常。它类似于Fatal,但具有词法范围、可扩展的异常模型、更智能的返回检查以及更好的错误消息。它将Fatal在 Perl 的未来版本(临时 5.10.1+)中替换该模块,但目前可以从 Perl 5.8.0 及更高版本的 CPAN 下载。

下一个版本autodieflock使用LOCK_NB(非阻塞)选项添加对调用的特殊处理。虽然失败的flock调用通常会导致 under 的异常,但如果返回的 errno( ) 为,则对usingautodie的失败调用只会返回 false 。flockLOCK_NB$!EWOULDBLOCK

这样做的原因是人们可以继续编写如下代码:

EWOULDBLOCK在上面的代码中,由于其他人已经锁定了文件flock(在我们正在使用不支持文件锁的文件系统或网络文件系统并且网络刚刚死机的情况下,当自动染色flock发现我们的 errno 不是时,它会生成一个适当的异常EWOULDBLOCK

这在我的 Unix 风格系统上的开发版本中运行良好,但在 Windows 下却严重失败。看起来虽然 Windows 下的 Perl 支持该LOCK_NB选项,但它没有定义EWOULDBLOCK. 相反,当发生阻塞时,返回的 errno 是 33(“域错误”)。

显然我可以将它作为一个常量硬编码到autodie中,但这不是我想要在这里做的,因为这意味着如果 errno 改变(或已经改变),我会搞砸的。我很想将它与 Windows 等效的POSIX::EWOULDBLOCK. 如果你能帮忙,请告诉我。

我特别不想要的答案:

  • 建议将其硬编码为常数(或者更糟糕的是,留下一个浮动的幻数)。
  • 在 Windows 下根本不支持LOCK_NB功能。
  • 假设LOCK_NB调用的任何失败flock都应仅返回 false。
  • 我在 p5p 或perlmonks上提出的建议。我已经知道他们了。
  • 解释如何flock,或异常,或Fatal工作。我已经知道了。亲密无间。
0 投票
8 回答
6167 浏览

c - 单元测试错误条件 - EINTR

简而言之,您如何在系统调用中对错误条件(例如 EINTR)进行单元测试。

我正在研究的一个特定示例(可能本身就是一个案例)是,当 fclose 返回带有 (errno==EINTR) 的 EOF 时,是否有必要再次调用 fclose。该行为取决于 fclose 的实现:

如果在 EINTR 发生时释放 fp,则此调用可能是不安全的。如何测试 when (errno==EINTR) 的错误处理?

0 投票
4 回答
2033 浏览

errno - 扔,返回还是错误?

我正在创建一个系统。我想知道的是,如果一个味精不受支持,它应该怎么做?我应该说不受支持的味精吗?我应该返回 0 还是 -1?或者我应该设置一个 errno (base->errno_)。有些消息我不关心是否有错误(例如 setBorderColour)。其他我会(添加文本或如果我创建保存 cmd 则可能保存)。

我想知道 1) 快速编码 2) 调试 3) 扩展和维护的最佳方法是什么。我可能会进行第三次调试,它很难调试 ATM,但那是因为有很多我没有填写的缺失代码。实际的错误并不难纠正。让用户知道有错误的最佳方法是什么?

该系统的工作原理与此类似,但并不完全相同。这是 C 风格,mycode 有一堆内联函数,将 settext(const char*text){ 包装到 msg(this, esettext, text)

0 投票
2 回答
7942 浏览

c - 有没有办法在多线程应用程序中安全地使用 errno?

如果您正在编写一个使用系统/库调用的多线程应用程序,该调用利用 errno 来指示错误类型,是否有一种安全的方法来使用 errno?如果没有,是否有其他方法来指示发生的错误类型,而不仅仅是发生了错误?

0 投票
15 回答
398557 浏览

c - 如何知道“errno”是什么意思?

打电话时execl(...),我得到一个errno=2. 这是什么意思?我怎么知道这个的意思errno

0 投票
6 回答
10739 浏览

python - 从 Python 访问 errno?

我被一个相当复杂的 Python 模块困住了,它不返回有用的错误代码(它实际上默默地失败了)。但是,它调用的底层 C 库设置了 errno。

通常 errno 来自 OSError 属性,但由于我没有异常,我无法理解它。

使用 ctypes,libc.errno 不起作用,因为 errno 是 GNU libc 中的宏。Python 2.6 有一些功能,但 Debian 仍然使用 Python 2.5。将 C 模块插入到我的纯 Python 程序中只是为了读取 errno 让我感到厌恶。

有没有办法访问errno?仅限 Linux 的解决方案很好,因为被包装的库是仅限 Linux 的。我也不必担心线程,因为在这可能失败的时间内我只运行一个线程。

0 投票
1 回答
910 浏览

visual-studio - Is there a Windows equivalent of EDQUOT?

I'm porting some C++ code from UNIX to Windows which detects the occurrence of the EDQUOT error, which indicates that there was an unsuccessful attempt to exceed the current user's disk quota. Visual Studio's <errno.h> doesn't have an EDQUOT, although I know that Windows has disk quota functionality. Visual Studio's <errno.h> does have an ENOSPC, which might be how the CRT expresses what UNIX would express as EDQUOT. Can anybody confirm or deny this theory? And if this isn't the way to handle this, what is?

0 投票
6 回答
1514 浏览

c++ - 在哪里可以看到与 errno 交互的函数列表?

在“The C Programming Language”一书中它说:

“库中的许多函数在发生错误或文件结束时设置状态指示符。这些指示符可以明确设置和测试。此外,整数表达式errno(在 中声明<errno.h>)可能包含一个错误编号,该编号提供有关最最近的错误。”

我在哪里可以看到这些函数的列表?

0 投票
4 回答
63573 浏览

python - 如何获取 IOError 的 errno?

C 有 perror 和 errno,它们打印并存储遇到的最后一个错误。这在执行文件 io 时很方便,因为我不必 fstat() 每个失败的文件作为 fopen() 的参数来向用户显示调用失败的原因。

我想知道在 python 中优雅地处理 IOError 异常时获取 errno 的正确方法是什么?

0 投票
4 回答
18013 浏览

c++ - 如何检测是否定义了 errno_t?

我正在使用来自 Visual C++ 2008 的 gcc 编译代码。该代码使用 errno_t,但在某些版本的 gcc 标头中,包括<errno.h>没有定义类型。如何检测类型是否已定义?是否有一个定义表明该类型已定义?在没有定义的情况下,我想提供 typedef 让代码在所有平台上正确编译。