The*_*ilk 4 linux system-calls error-handling
我正在使用 Linux(内核版本 2.6.32.28)笔记本电脑。
在我插入/执行文件 io/移除 SD 组合卡后,出现以下错误:
mmcblk0: error -123 sending status command
mmcblk0: error -123 sending read/write command, response 0x0, card status 0x0
mmcblk0: error -123 sending requesting status
Run Code Online (Sandbox Code Playgroud)
现在,我想了解这些错误的含义。
正如我所看到的,几乎没有标准错误代码位于 arch/powerpc/boot/stdio.h 和其他分散在其他各个地方的其他代码中。
Linux 中是否有任何系统的方法来跟踪(和理解)错误代码(在源代码中)?
在 shell 中,您可以运行perror
:
$ perror 123
OS error code 123: No medium found
Run Code Online (Sandbox Code Playgroud)
这是 MySQL 自带的。
如果你没有 MySQL,你可以使用 Perl 或 Python,例如:
$ perl -MPOSIX -e 'print strerror(123)'
No medium found
$ python -c 'import os; print os.strerror(123)'
No medium found
Run Code Online (Sandbox Code Playgroud)
在 C 程序中,您可以使用具有相同名称的函数:
void perror(const char *s);
Run Code Online (Sandbox Code Playgroud)
它会打印您的消息s
并附加错误的原因。
或者你可以使用:
char *strerror(int errnum);
Run Code Online (Sandbox Code Playgroud)
将错误的描述作为字符串返回,以便您可以检查它或按您喜欢的方式打印它。
查看man 3 perror
和man 3 strerror
了解详情。
有标准误差值,定义在errno.h
. 您可以查看系统上的此文件以查看数值。在大多数系统上,它们位于/usr/include/errno.h
或包含在其中的文件中。在 Linux 上,大多数在/usr/include/asm-generic/errno-base.h
或 中/usr/include/asm-generic/errno.h
,还有一些在/usr/include/bits/errno.h
.
如果您有数值,请调用标准库函数strerror
或perror
获取相应的错误消息(在您当前的语言环境中)。从命令行查看错误字符串的快速方法是
perl -MPOSIX -le 'print strerror 123'
python -c 'import os; print os.strerror(123)'
zmodload zsh/system; syserror 123 # in zsh
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8233 次 |
最近记录: |