问题标签 [strerror]
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 - 为什么 strcpy(strerror(errno),"Hello") 不复制“Hello”,但 {ptr=strerror(errno);strcpy(ptr,"Hello");} 复制?
请解释以下程序中发生了什么。
我检查了strerror(errno)
程序开始和结束时返回的地址,并确认它每次都返回相同的地址。然后一旦确定这一点,在第一种情况下,我开始分配相同的地址ptr
,然后将字符串复制"Hello"
到它使用strcpy()
.In case II,我尝试"Hello"
直接复制到由.我返回的地址strerror(errno)
。我有奇怪的发现。如果您解释以下内容,我将不胜感激:
万一,我复制"Hello"
到ptr
并且它在随后printf()
的ptr
打印中成功Hello
。但是,当我传递strerror(errno)
而不是传递ptr
到时printf()
,它会打印旧的错误消息。怎么可能ptr
指向一条消息但strerror(errno)
指向另一条消息时两个地址相同?我验证了两个地址相同,我希望复制"Hello"
到ptr
应该与将其复制到返回相同strerror(errno)
。为了双重检查这种差异,然后我尝试"Hello"
直接复制到,strerror(errno)
但这次也不起作用它会打印相同的旧错误字符串。但令人惊讶的是,在这一点上,我再次验证了地址ptr
和strerror(errno)
确实一直都一样!!这怎么可能?如果它们相同,它们如何指向不同的字符串?一个到"Hello"
另一个到旧的自定义错误消息?
请解释这背后的原因。
输出
c - 为什么strerror()的结果不能返回
根据手册页strerror(errnum)
返回 a char *
,但我收到以下警告:
当我运行它时出现段错误./temp 0
但不是运行它时,我得到一个段错误./temp 256
。
有人可以解释为什么会发生这种情况以及如何解决它(如果可能的话)?
温度.c
c - 如何在 C 中打印 errno 的符号名称?
我可以使用perror()
或strerror()
打印属于 的“人类可读”错误消息errno
,但如果我还想打印 的符号名称(例如“ EAGAIN
”)errno
怎么办?
任何方便的功能或宏来做到这一点?
更新:根据下面接受的答案及其评论的想法,附上我最终编写的代码:
linux - 无法使用 mkdir 理解 perror 的消息
我有一段代码可以从一个字符串创建一个目录,这里的cwd是一个给出目录路径的字符串。不幸的是,有一个错误不允许我创建目录,所以我像这样使用perror()和strerror()函数来获取错误的符号名称。
我的问题是perror()和strerror()给出错误提示“不存在这样的文件或目录”。我在这里查看了 mkdir 的手册页,但所述错误不在手册页上给出的错误列表中。难道我做错了什么?
c - VxWorks 上 strerror_r 的最大消息大小
VxWorks 提供了一个 strerror_r 版本,它只接受两个参数。
cURL 提到MAXERRSTR_SIZE
.
vxworks 风格的 strerror_r() 确实使用了我们传递给函数的缓冲区。缓冲区大小应至少为 rtsold.h 中定义的 MAXERRSTR_SIZE (150)
但我似乎无法在发行版的任何地方找到文件 rtsold.h。
复制到缓冲区的消息的最大大小是多少?是否在某处定义了#define 或整数常量?
c - 在 waitpid 之后使用 strerror(errno)。strerror 的预期结果是什么?
我尝试使用 strerror(errno) 获取 waitpid 结果字符串。
我检查了两种情况下的状态字符串:
我从 strerror 得到以下打印:
孩子跑步时:
孩子终止:
waitpid 之后 strerror(errno) 的预期结果字符串应该是什么。如果孩子正常退出/终止,那么“无子进程”是什么意思?如果子进程正在运行/子进程终止,waitpid 的预期返回值应该是多少?
在我的例子中,strerror 返回:
使用的代码:
输出/输出:
无睡眠的 O/P:
c - 如何在当前语言环境中使用 strerror_l?
我正在修复一些用于strerror
(非线程安全)多线程的 Linux 代码。我发现strerror_r
并且strerror_l
都是线程安全的。由于不同的定义strerror_r
(取决于_GNU_SOURCE
它的定义不同)我想使用较新的strerror_l
函数,但是我应该如何获取locale_t
当前语言环境的对象?我没有使用iconv
或其他任何东西,只是普通的 libc,而且我看不到如何获得“默认语言环境”对象(我不在乎以什么语言打印错误,我只想要一个人类可读的字符串。 )
c++ - 如何在 C++ 中使用错误控制函数?
我的源代码如下:
我想显示我的error
字符串“除零”!但输出是:
salam
没有这样的文件或目录
请帮助我如何在c++中使用errno
and ?errorstring
c - 获取recv函数返回的错误号
如何获取recv()
in socket 通信返回的错误号或错误字符串,recv()
返回-1
为读取大小,这意味着发生了一些错误。我想知道错误的具体原因。所以我怎么能得到那个。
c++ - Expected initializer before 'strerror'
I am trying to make a function like this which will print out the error details associated with it's error number, but i am getting the error error: expected initializer before 'strerror'
. Here is the code
How to solve this problem ? Thanks