问题标签 [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.
c - Using errno for application / library error reporting
I'm writing a C library for a software project. I need to do some error reporting, but I'm a little bit too lazy to implement my own complex set of error-codes, variables and functions. Is it acceptable to use the errno facility provided by the libc for custom error reporting? All my errors fit into the categories given by the E...
macros.
For instance, let's say my code includes a function that reads a SHA256 hash in hexdecimal notation and converts it into some sort of internal format. I want to use errno
to report errors:
Of course this example is ridiculously simplified, in reality much more errors may happen in other functions.
debugging - 在 gdb 中的 errno 上设置观察点
我试图找出 errno 何时更改。
一开始我在gdb中尝试了“watch errno”,导致报错
我可以通过使用“-pthread”编译来解决这个问题。但是,它仍然不起作用,我现在收到错误
当我输入“watch errno”时。我需要做什么才能在 errno 上设置观察点?
c++ - stdio 是否总是设置 errno?
当stdio
流遇到错误(但不是 EOF)时,将设置流的错误指示符,以便ferror()
返回非零值。我一直认为更多信息可在errno
. 但是我怎么知道呢?
一些功能的文档[例如man fopen
在 Linux 下] 说也errno
将被设置。不过man fgets
完全没提errno
。glibc 信息页面令人放心:
除了设置与流相关的错误指示符之外,对流进行操作的函数也设置 `errno' 的方式与对文件描述符进行操作的相应低级函数相同。
但我不知道这个保证有多强。是C标准要求的吗?在 Visual C/C++ 中会发生什么?
c - sendto() 失败,断开 telnet 连接并阻止程序
我已经被这个问题困扰了好几天,我真的不知道这是从哪里来的。
我正在做一个通过 UDP 通信的程序。我正在使用该sendto()
方法在程序之间进行通信。此外,还有一个用户打开和使用的 UI TCP 套接字,通过 telnet 管理程序。telnet 部分 100% 与程序的其他功能一起工作。
问题是,当我使用该sendto()
方法时,程序完全阻塞并且 Telnet 连接断开(通信已被主机切断,它说)。我的问题是,当程序阻塞时,我无法弄清楚为什么sendto()
会失败,因为它不会执行后面的内容。即使有类似的东西:
没有任何反应,我无法获得任何信息errno
。telnet 连接中断的事实对我来说似乎很奇怪,因为它位于一个非常不同的端口上,因此不应该像这样中断。我试图将我的 UDP 套接字设置为非阻塞,但它仍然不起作用。这是代码的非工作部分:
提前感谢您的帮助,如果您需要更具体的信息,请询问我。
c++ - set_new_handler 和 errno
如果你使用set_new_handler
并且你的处理函数被调用,errno
保证被设置,它是从 0 返回的方式malloc
?还是更好用strerror(ENOMEM)
?errno
适用于 Microsoft C++ 和 GCC,但这仍然存在是否得到保证的问题。
c++ - 调用 fdopen() 后出现 Errno 22
调用时出现错误fdopen
,它设置errno
为 22。我正在使用 exec 命令调用子进程。子进程调用fdopen
文件描述符 4。第一个子进程工作并将数据发送回父errno
进程,为 0。父进程创建下一个子进程后,fdopen(4, "w");
再次调用,此时errno
设置为 22。
根据我的阅读,errno
22 forfdopen()
可能意味着模式参数不正确。我还读到这可能是一个错误fnctl
,这可能意味着文件描述符错误。我指定文件描述符 4,它适用于第一个子进程。这可能errno
是我尝试创建另一个时设置为 22 的原因FILE*
吗?
我无法弄清楚它何时适用于一个子进程,但不适用于下一个。任何人都可以为我阐明这一点吗?
这是代码:
mysql - 无法创建表错误号 150
这是我的 SQL 脚本
我没有看到任何语法错误。一切看起来都很好。我的数据库引擎是 innoDB。但我怎么一直收到这个错误?
它没有显示错误所在的行。
c - lseek EOVERFLOW 错误处理
我注意到当我尝试寻找比 off_t 更多的字节时,我得到一个 EOVERFLOW 错误。我怎样才能在 off_t 中寻找比更大的数字更多的东西?
gdb - 在 GDB 中打印 `errno` 名称而不是值
我想知道是否有任何方法可以errno
在 GDB 中打印符号名称而不仅仅是一个数字。例如,而不是
我想看到类似的东西
c - 为什么 open() 失败并且没有设置 errno?
在我的代码open()
中失败,返回码为 -1,但不知何故errno
没有设置。
输出是
为什么没有设置errno?我如何确定open()
失败的原因?